从onMessage读取完整数据流
问题描述:
如何使用JavaScript从WebSocket完全读取event.data
?从onMessage读取完整数据流
onMessage: function(event) {
var msg = event.data;
alert(msg);
}
在上面的代码中,变量msg
只显示部分数据。如何从WebSocket服务器接收完整的数据?
答
event.data
包含完整的信息;它只取决于你的输出,你会看到多少。警告框只能包含特定数量的字符,因为更多字符根本无法放入警报框。 alert
对于显示大数据,ing并不是一个好习惯。
一个更方便的方法是保存长度和检查,例如:
onMessage: function(event) {
var msg = event.data;
alert(msg.length);
}
长度应该仅仅是正确的长度,即您发送的字符长度。
答
WebSockets是基于消息的传输。如果服务器已将“流”分成几个消息块,那么您将收到多个消息事件,而第一个消息事件将不会包含您期望的所有数据。
此外,WebSocket定义要求为完整消息调用onmessage处理函数。你不能得到部分消息(除非浏览器的WebSocket实现被破坏)。
我会尝试一些异步而不是alert()来记录您收到的消息。例如,如果您有Firebug或Chrome Javascript控制台,请尝试console.log()。您是将信息数据积累在HTML文本框中,还是只是在收到信息时覆盖它?
感谢您的回复,我再次尝试了没有提示框,这次我已经在HTML文本框中放置了“event.data”,仍然收到部分数据,不完整的数据。 – osdevkid
@osdevkid:数据多少?也许浏览器也有所作为。你有多个'onmessage'调用吗? – pimvdb