从onMessage中读取流中的完整数据

时间:2011-09-02 07:36:04

标签: javascript websocket

如何使用JavaScript从WebSocket中完全阅读event.data

onMessage: function(event) {
 var msg = event.data;
 alert(msg);
}

在上面的代码中,变量msg仅显示部分数据。如何从WebSocket服务器接收完整的数据?

2 个答案:

答案 0 :(得分:0)

event.data包含完整信息;它只取决于你的输出你会看到多少。警报框最多只能包含特定数量的字符,因为更多字符根本不适合警报框。 alert不是显示大数据的好方法。

更方便的方法是保存长度并检查,例如:

onMessage: function(event) {
    var msg = event.data;
    alert(msg.length);
}

长度应该是正确的长度,即您发送的字符的长度。

答案 1 :(得分:0)

WebSockets是基于消息的传输。如果服务器已将“流”分成几个消息块,那么您将收到多个消息事件,并且第一个消息事件将不具有您期望的所有数据。

此外,WebSocket定义要求为完整消息调用onmessage处理程序。你不能得到部分消息(除非浏览器的WebSocket实现被破坏)。

我会尝试使用异步而不是alert()来记录您收到的消息。例如,如果您有Firebug或Chrome Javascript控制台,请尝试使用console.log()。您是在HTML文本框中累积消息数据还是在收到消息时覆盖它?