文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Node.js WebSocket中的ping和pong消息是如何使用的?

2024-02-06 13:16

关注

WebSocket概述 WebSocket是一种双向通信协议,允许客户端和服务器在单个TCP连接上进行全双工通信,即使在没有HTTP请求的情况下也是如此。WebSocket的建立需要经过HTTP握手过程,握手成功后,通信双方即可通过WebSocket协议进行数据交换。

ping和pong消息概述 ping和pong消息是WebSocket协议中定义的两种特殊消息,用于保持连接处于活动状态并检测连接是否中断。

ping消息是一个由一个字节组成的特殊消息,用来询问服务器当前的连接状态。

pong消息是一个由一个字节组成的特殊消息,用来回复ping消息,以表明服务器当前的连接状态是正常的。

WebSocket的ping和pong消息

WebSocket定义ping和pong消息,用于验证通信双方是否在短时间内发送和接收数据,从而保持连接活动的正常。当连接建立时,客户端和服务器都会定期发送ping消息,并期望在一定的时间内收到pong消息作为回应。如果在规定的时间内没有收到回复,则认为连接已中断。

ping和pong消息的使用

ping和pong消息的使用非常简单,只需在客户端和服务器端分别发送和接收即可。下面是一个演示代码:

// 客户端代码
const WebSocket = require("ws");

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

ws.on("open", () => {
  console.log("WebSocket connection opened");

  // 定期发送ping消息
  setInterval(() => {
    ws.ping();
  }, 5000);
});

ws.on("message", (data) => {
  if (data === "pong") {
    console.log("Received pong message from server");
  } else {
    console.log(`Received message from server: ${data}`);
  }
});

ws.on("close", () => {
  console.log("WebSocket connection closed");
});

// 服务器代码
const WebSocketServer = require("ws").Server;

const wss = new WebSocketServer({ port: 8080 });

wss.on("connection", (ws) => {
  console.log("WebSocket connection established");

  // 定期发送ping消息
  setInterval(() => {
    ws.ping();
  }, 5000);

  ws.on("message", (data) => {
    if (data === "ping") {
      console.log("Received ping message from client");
      ws.pong();
    } else {
      console.log(`Received message from client: ${data}`);
      ws.send(`Received: ${data}`);
    }
  });

  ws.on("close", () => {
    console.log("WebSocket connection closed");
  });
});

在上面的代码中,客户端和服务器都定期发送ping消息,并期望在一定的时间内收到pong消息作为回应。如果在规定的时间内没有收到回复,则认为连接已中断。

注意: ping和pong消息是WebSocket协议中定义的特殊消息,因此可以使用WebSocket库提供的内置方法来发送和接收这些消息。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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