Node.js构建WebSocket服务:原理、实现与代码示例

作者:墨池时间:2026-10-31 15:36:46浏览:112

本文详解Node.js中WebSocket服务的构建过程。介绍WebSocket基于TCP的全双工通信特性及轻量级协议头优势,并通过nodejs-websocket包提供服务端与客户端的完整代码示例,展示消息收发与定时发送机制,帮助开发者快速掌握WebSocket在Node.js环境下的实际应用。

WebSocket简介

自HTML5标准引入以来,WebSocket提供了一种在单一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...");
});

该模块将读取到的字符串消息映射为text事件,并通过sendText()方法向客户端发送字符串数据。

关于其他可用方法和事件,建议查阅相关源码文档。

执行上述代码即可启动WebSocket服务。

客户端

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包。

通过定时器模拟实时消息发送,以便观察客户端与服务端之间的双向通信流程。

总结

以上内容为个人实践经验总结,旨在提供参考,欢迎支持本站。

作者最新文章