node.js项目如何创建websocket模块

 更新时间:2024年09月06日 09:17:46   作者:-風过无痕  
这篇文章主要介绍了node.js项目如何创建websocket模块问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

  • node.js是没有提供内置的websocket模块,下载第三方包ws模块来完成
  • 注意的是这个模块好像在断开连接这一块是有点问题,需要自己补充代码
  • 通过内置url模块解决路径参数-逻辑代码解决断开连接问题-方便扩展业务需求
  • 可以不用-但不能没有这些

代码实现

1.下包

npm install ws

2.参考代码

// 第三方包ws
const WebSocket = require("ws");

// 内置url模块-处理websocket路径参数
const url = require("url");

// 注释
// 前端使用-参考主页文章uni-app使用websocket
// sendMessage方法是前端的
// userType代表类型(5-断开连接/1-发送消息等等-自定义)
// 断开连接数据格式
// sendMessage(JSON.stringify({
//   userType:'5',
//   moblieType:'用户id'
// }))


// 创建WebSocket服务器,监听端口9000
const wss = new WebSocket.Server({ port: 9000 });

// 假设ip是 - 192.168.2.22
// 此时websocket前端连接地址就是
// ws://101.43.100.203:3010:9000?userId=用户id


// 存储所有连接
// 方便断开连接
var connections = new Set();

wss.on("connection", function connection(ws, req) {

  // 使用url模块-接收前端发来的userId(路径参数)
  const parameters = url.parse(req.url, true).query;
  const userId = parameters.userId;
  
  // 用户id+ws实例存入
  connections.add({
    id: userId,
    Instantiation: ws,
  });


  // 请求头信息-如果是uni-app(APP端-传递header-可以打印)- 参考uni-app文档websocket
  // console.log("请求头信息", req.headers);

  console.log("客户端连接成功!");

  // 接收来自客户端的消息
  ws.on("message", function incoming(getMessage) {
    console.log("客户端: %s", JSON.parse(getMessage));
    
    // 传递字符串文字-自取
    // console.log("客户端: %s", getMessage);
    // const clientMsg = Buffer.from(getMessage.msg, "hex");

    let data = JSON.parse(getMessage);

    // 断开websocket连接-参考上方注释数据格式
    if (data.userType == 5) {
      console.log("用户id-断开连接", userId);

      for (const connection of connections) {
        if (connection.id == data.moblieType) {
          
          // 关闭删除连接池某个websocket连接
          connection.Instantiation.close();
          connections.delete(connection);
        }
      }

      return;
    }
  });
});

总结

经过这一趟流程下来相信你也对 node.js项目-创建websocket模块 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nodejs安装与配置过程+初学实例解读

    nodejs安装与配置过程+初学实例解读

    这篇文章主要介绍了nodejs安装与配置过程+初学实例解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Node.js中的events事件模块知识点总结

    Node.js中的events事件模块知识点总结

    在本篇文章里小编给大家整理的是一篇关于Node.js中的events事件模块知识点总结内容,有兴趣的朋友们可以跟着学习下。
    2021-12-12
  • 详解nodejs微信公众号开发——3.封装消息响应模块

    详解nodejs微信公众号开发——3.封装消息响应模块

    上一篇文章:nodejs微信公众号开发(2)自动回复,实现了简单的关注回复。采用拼接字符串的形式,并不是很方便,这里我们将其封装承接口。
    2017-04-04
  • node.js在Linux下执行shell命令、.sh脚本的问题

    node.js在Linux下执行shell命令、.sh脚本的问题

    很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本示例
    2022-01-01
  • node.js+postman+mongodb搭建测试注册接口的实现

    node.js+postman+mongodb搭建测试注册接口的实现

    本文主要介绍了node.js+postman+mongodb搭建测试注册接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 用node撸一个监测复联4开售短信提醒的实现代码

    用node撸一个监测复联4开售短信提醒的实现代码

    这篇文章主要介绍了用node撸一个监测复联4开售短信提醒的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • NodeJS服务器实现gzip压缩的示例代码

    NodeJS服务器实现gzip压缩的示例代码

    这篇文章主要介绍了NodeJS服务器实现gzip压缩的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • node.js中实现GET和POST请求的代码示例

    node.js中实现GET和POST请求的代码示例

    在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如发送验证码、登录表单提交,请求服务器数据一般都使用GET请求,表单提交到服务器一般都使用POST请求,本文详细介绍了在Node.js中如何处理GET和POST请求,需要的朋友可以参考下
    2024-12-12
  • Node.js进程管理之子进程详解

    Node.js进程管理之子进程详解

    本文详细讲解了Node.js进程管理之子进程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 如何在NestJS中添加对Shopify的WebHook验证详解

    如何在NestJS中添加对Shopify的WebHook验证详解

    这篇文章主要为大家介绍了如何在NestJS中添加对Shopify的WebHook验证详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论