文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

初学者指南:使用 Node.js WebSocket 构建实时网络应用程序

2024-04-02 19:55

关注

WebSocket是一种全双工通信协议,允许在客户端和服务器之间建立持久连接。在实时网络应用程序中,WebSocket 非常有用,因为它允许客户端和服务器在不中断连接的情况下立即交换数据。

安装和配置

要使用 Node.js 的 WebSocket,首先需要安装ws包:

npm install ws

然后,你需要创建 WebSocket 服务器:

const WebSocket = require("ws");

const wss = new WebSocket.Server({ port: 8080 });

这会创建一个侦听 8080 端口的 WebSocket 服务器。

客户端 WebSocket

在客户端,你可以使用ws包创建 WebSocket 客户端:

const WebSocket = require("ws");

const ws = new WebSocket("ws://localhost:8080");

这会创建一个连接到本地主机 8080 端口的 WebSocket 客户端。

事件处理

WebSocket 服务器和客户端都提供事件处理程序,用于接收和发送数据。

发送和接收数据

在服务器上,你可以使用send方法向已连接的客户端发送消息:

ws.send("Hello from server!");

在客户端上,你可以使用send方法向服务器发送消息:

ws.send("Hello from client!");

心跳

WebSocket 服务器可以通过发送心跳消息来保持连接处于活动状态。这有助于防止不活动的连接被防火墙或代理服务器关闭。你可以使用pingpong方法来实现心跳:

// 服务器
wss.on("connection", ws => {
  setInterval(() => {
    ws.ping();
  }, 30000);
});

// 客户端
ws.on("ping", () => {
  ws.pong();
});

安全性

WebSocket 连接默认不安全。为了确保数据传输的安全,你应该使用 SSL/TLS:

const https = require("https");
const fs = require("fs");

const httpsServer = https.createServer({
  key: fs.readFileSync("key.pem"),
  cert: fs.readFileSync("cert.pem")
});

const wss = new WebSocket.Server({ server: httpsServer });

示例应用程序

下面是一个简单的 Node.js WebSocket 应用程序示例,它显示了一个聊天室:

// 服务端
const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 8080 });

wss.on("connection", ws => {
  ws.on("message", message => {
    wss.clients.forEach(client => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });
});

// 客户端
const WebSocket = require("ws");
const ws = new WebSocket("ws://localhost:8080");

ws.on("open", () => {
  ws.send("Hello from client!");
});

ws.on("message", message => {
  console.log(message);
});

进阶使用

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯