当前位置: 代码网 > it编程>前端脚本>Node.js > Node.js之构建WebSocket服务全过程

Node.js之构建WebSocket服务全过程

2024年11月03日 Node.js 我要评论
websocket简介websocket是html5开始提供的一种在单个tcp 连接上进行全双工通讯的协议。它有如下特点:基于tcp,客户端和服务端只建立一个tcp连接。服务端可以主动向客户端发送消息

websocket简介

websocket是html5开始提供的一种在单个tcp 连接上进行全双工通讯的协议。

它有如下特点:

  • 基于tcp,客户端和服务端只建立一个tcp连接。
  • 服务端可以主动向客户端发送消息。
  • 采用了二进制帧结构,不具备http/2多路复用、优先级等特性
  • 更轻量的协议头,减少数据传输量。
  • websocket握手包的报文格式必须符合http报文格式的规范

客户端和服务端的简单实现

服务端

服务端我们使用nodejs-websocket包来实现。

const ws = require("nodejs-websocket");
const server = ws.createserver(function (socket) {
  // 读取字符串消息,事件名称为:text
  var count = 1;
  socket.on("text", function (str) {
    // 在控制台输出前端传来的消息
    console.log(str);
    //向前端回复消息

    setinterval(() => {
      socket.sendtext("服务器端收到客户端发来的消息" + str + count++);
    }, 2000);
  });

  socket.on("error", () => {
    console.log("err");
  });
});

server.listen(3000, () => {
  console.log("connected...");
});

nodejs-websocket包读取字符串事件为text,发送字符串到客户端方法为sendtext()

还有其他方法和事件请阅读源码。

运行上边的代码,启动服务

客户端

const websocket = require("ws");
const ws = new websocket("ws://localhost:3000/");

ws.onopen = function () {
  setinterval(function () {
    ws.send("客户端消息");
  }, 2000);
};

ws.onmessage = function (e) {
  console.log(e.data);
};

当然,这段代码也可以在浏览器直接运行(不需要引入ws包)。

我们使用定时器模拟消息的实时发送,来观察客户端和服务端消息的通讯过程。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com