socket.io中的延迟发射率回调

时间:2018-07-20 17:12:04

标签: node.js websocket socket.io socket.io-1.0

我在socket.io项目中进行了以下通信

// Server side
socket.on('pattern', (value, callback) => {
   //... run some code
   callback(...)
})

// Client side
client.emit('pattern', value, (response) => {
   // ....process response
})

此逻辑如何抵抗延迟因素?例如:-

  1. 如果在客户端(同一客户端)两次完成发射,是否将回调两次调用?第二个事件会使第一个事件无效(不谈论价值)吗?
  2. 使用这种逻辑模式而不是这样做有什么好处(尤其是在涉及延迟的情况下):-

    //服务器端     socket.on('pattern',(value)=> {        // ...运行一些代码        socket.emit('回调',响应)     })

    // Client side
    client.on('callback', (response) => ....)
    client.emit('pattern', value)
    

在这些情况下如何处理延迟?

1 个答案:

答案 0 :(得分:1)

  

如果在客户端(同一客户端)上完成两次发射,回调将被调用两次吗?

是的。您从客户端发送的每个事件都会分别传递到服务器,因此服务器上的事件处理程序将针对客户端发送的每个单独的消息而被调用。

  

第二个事件是否会使第一个事件无效(不谈论价值)?

不。您的代码将首先处理第一个事件,然后分别调用以处理第二个事件。当您的代码获得两个具有不同数据的单独事件时,将完全由您的代码决定(您不显示)。但是,socket.io将同时提供它们并使用每个单独的数据段调用您的代码。您的代码如何处理。

我不明白您的第二个问题。通常,如果您可以将多个数据组合到一个传输中,那将比发送多个传输更好(开销更少)。这适用于所有网络,而不仅仅是特定于socket.io。