Javascript等待Websocket“发送”命令来完成吗?

Javascript等待Websocket“发送”命令来完成吗?

问题描述:

我使用sockjs与Websocket一起工作。Javascript等待Websocket“发送”命令来完成吗?

sock.send(JSON.stringify(obj1)); 
sock.send(JSON.stringify(obj2)); 
sock.send(JSON.stringify(obj3)); 
... 

是否保证,“发送”命令将被一个接一个地评估? (当第一次完成时,第二次启动等等)

在此先感谢!

要发送的数据排队并异步传输,因此可能会在第一个数据传输之前调用第二个数据。但是,第二次调用发送的数据在第一次之前不会到达服务器。

您可以阅读更多关于Web套接字行为in the HTML5 specification

如果你的发送调用在同一个Javascript执行上下文中,那么它们肯定会按顺序执行。另外,每个发送将由onmessage处理程序作为整个消息接收(即,它不会被分段)。

相同的执行上下文:

function doit() { 
    ws.send("msg1"); 
    ws.send("msg2"); 
} 

不同执行上下文:

setTimeout(function() { ws.send("msg1"); }, 100); 
setTimeout(function() { ws.send("msg2"); }, 110); 

在第二个例子中, “MSG2” 不能保证的 “MSG1” 之后被递送。这很可能是因为延迟时间稍长,但不能保证。