我使用sockjs来处理Websocket。
sock.send( JSON.stringify(obj1) );
sock.send( JSON.stringify(obj2) );
sock.send( JSON.stringify(obj3) );
...
是否保证"发送"命令将被一个接一个地评估?(第一次结束时,第二次开始,依此类推)
提前感谢!
要发送的数据是异步排队和传输的,因此第二个数据可能在第一个数据传输之前被调用。但是,要发送的第二个调用发送的数据将不会在第一个调用之前到达服务器。
您可以在HTML5规范中阅读更多关于Web套接字行为的信息。
如果发送调用在同一个Javascript执行上下文中,那么它们肯定会按顺序执行。此外,onmessage处理程序将把每次发送作为一个完整的消息来接收(即,它不会被分割)。
相同的执行上下文:
function doit () {
ws.send("msg1");
ws.send("msg2");
}
不同的执行上下文:
setTimeout(function () { ws.send("msg1"); }, 100);
setTimeout(function () { ws.send("msg2"); }, 110);
在第二个示例中,不能保证在"msg1"之后传递"msg2"。可能是因为指定的延迟稍长,但不能保证。