2011-09-02 133 views
1

如何使用JavaScript从WebSocket完全读取event.data从onMessage读取完整数据流

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

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

回答

0

event.data包含完整的信息;它只取决于你的输出,你会看到多少。警告框只能包含特定数量的字符,因为更多字符根本无法放入警报框。 alert对于显示大数据,ing并不是一个好习惯。

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

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

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

+0

感谢您的回复,我再次尝试了没有提示框,这次我已经在HTML文本框中放置了“event.data”,仍然收到部分数据,不完整的数据。 – osdevkid

+0

@osdevkid:数据多少?也许浏览器也有所作为。你有多个'onmessage'调用吗? – pimvdb

0

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

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

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

相关问题