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” 之后被递送。这很可能是因为延迟时间稍长,但不能保证。