我使用sockjs與Websocket一起工作。Javascript等待Websocket「發送」命令來完成嗎?
sock.send(JSON.stringify(obj1));
sock.send(JSON.stringify(obj2));
sock.send(JSON.stringify(obj3));
...
是否保證,「發送」命令將被一個接一個地評估? (當第一次完成時,第二次啓動等等)
在此先感謝!
我使用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」 之後被遞送。這很可能是因爲延遲時間稍長,但不能保證。