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

 更新时间:2024年09月06日 13:25:38   作者:一介白衣ing  
这篇文章主要介绍了Node.js之构建WebSocket服务全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

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

总结

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

相关文章

  • npm、pnpm、yarn之间的区别小结

    npm、pnpm、yarn之间的区别小结

    平时在项目开发中,经常用到npm、pnpm、yarn这些来安装包,本文主要介绍了npm、pnpm、yarn之间的区别小结,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 前端+nodejs+mysql实现前后端联通的完整代码

    前端+nodejs+mysql实现前后端联通的完整代码

    Node.js主要属于后端技术,但也可以用于前端开发的某些场景,下面这篇文章主要介绍了前端+nodejs+mysql实现前后端联通的完整代码,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • 在 node 中使用 koa-multer 库上传文件的方式详解

    在 node 中使用 koa-multer 库上传文件的方式详解

    本文主要介绍了上传单个文件、多个文件,文件数量大小限制、限制文件上传类型和对上传的图片进行不同大小的裁剪,对node使用 koa-multer 库上传文件相关知识感兴趣的朋友一起看看吧
    2024-01-01
  • node.js实现端口转发

    node.js实现端口转发

    这篇文章主要为大家详细介绍了node.js实现端口转发的关键代码,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • node.js中使用q.js实现api的promise化

    node.js中使用q.js实现api的promise化

    这篇文章主要介绍了node.js中使用q.js实现api的promise化,promise一个标准,它描述了异步调用的返回结果,包括正确返回结果和错误处理,需要的朋友可以参考下
    2014-09-09
  • 使用express+multer实现node中的图片上传功能

    使用express+multer实现node中的图片上传功能

    这篇文章主要介绍了使用express+multer实现node中的图片上传功能,需要的朋友可以参考下
    2018-02-02
  • connect中间件session、cookie的使用方法分享

    connect中间件session、cookie的使用方法分享

    今天大象哥用了下connect的session和cookie,感觉还挺好用的,分享一下(里面坑挺多的,文档写的太模糊了,费了哥不少时间)。
    2014-06-06
  • 理解nodejs的stream和pipe机制的原理和实现

    理解nodejs的stream和pipe机制的原理和实现

    本篇文章主要介绍了理解nodejs的stream和pipe机制的原理和实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • nvm如何切换与管理node版本

    nvm如何切换与管理node版本

    这篇文章主要介绍了nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Node+Express连接MySQL实现增删改查功能

    Node+Express连接MySQL实现增删改查功能

    这篇文章主要为大家详细介绍了Node如何结合Express连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-05-05

最新评论