Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript socket io是否自动处理乒乓球?_Javascript_Node.js - Fatal编程技术网

Javascript socket io是否自动处理乒乓球?

Javascript socket io是否自动处理乒乓球?,javascript,node.js,Javascript,Node.js,我一直怀疑socket io是否能自动处理乒乓球?。我知道pingTimeout和pingInterval导致了这种混乱 为了实现持久的socket.io连接,我们需要ping/pong消息,我是否正确 如果socket.io不能自动处理它,是否可以自行创建乒乓球事件,客户端发送一条乒乓球消息,服务器每隔一段时间发出一条乒乓球消息 Socket.io会自动为您执行此操作。在socket.io循环中,这个概念被称为心跳机制,而不是乒乓球 乒乓球间隔也可以配置为: const httpServ

我一直怀疑socket io是否能自动处理乒乓球?。我知道pingTimeoutpingInterval导致了这种混乱

  • 为了实现持久的socket.io连接,我们需要ping/pong消息,我是否正确

  • 如果socket.io不能自动处理它,是否可以自行创建乒乓球事件,客户端发送一条乒乓球消息,服务器每隔一段时间发出一条乒乓球消息


  • Socket.io会自动为您执行此操作。在socket.io循环中,这个概念被称为心跳机制,而不是乒乓球

    乒乓球间隔也可以配置为:

    const httpServer = require("http").createServer();
    const io = require("socket.io")(httpServer, {
      pingInterval: 10000, // how often to ping/pong.
      pingTimeout: 30000 // time after which the connection is considered timed-out.
    })
    

    ping超时 默认值:5000

    此值用于heartbeat机制,该机制定期检查服务器和客户端之间的连接是否仍处于活动状态

    服务器发送一个ping,如果客户端在ping超时毫秒内没有应答pong,则服务器认为连接已关闭

    类似地,如果客户端在pingInterval+pingTimeout毫秒内没有从服务器接收到ping,则客户端还认为连接已关闭

    在这两种情况下,断开连接的原因都是:
    ping超时

    您应该将socket.io看作是WebSockets之上的一个组件。它应该能够自动处理WebSocket连接的琐事,这样您就可以专注于发送/接收消息

    现在回答您的问题:

    如果socket.io不能自动处理它,我自己创建一个乒乓球事件是否可以,客户端发送一个乒乓球消息,服务器每隔一段时间发送一个乒乓球消息进行响应

    是的,您可以,但这完全没有必要,因为socket.io为您提供了这一功能

    为了实现持久的socket.io连接,我们需要ping/pong消息,对吗

    不,同样,socket.io会为您做这件事

    如果socket.io不能自动处理它,我自己创建一个乒乓球事件是否可以,客户端发送一个乒乓球消息,服务器每隔一段时间发送一个乒乓球消息进行响应

    又没必要了