返回顶部
首页 > 资讯 > 前端开发 > node.js >Node.js WebSocket中的ping和pong消息是如何使用的?
  • 0
分享到

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

Node.jsWebSocketpingpong 2024-02-06 13:02:14 0人浏览 佚名
摘要

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

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库提供的内置方法来发送和接收这些消息。

--结束END--

本文标题: Node.js WebSocket中的ping和pong消息是如何使用的?

本文链接: https://lsjlt.com/news/561510.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作