Javascript WebSocket.onmessage何时触发?
(1) 打开WebSocket连接Javascript WebSocket.onmessage何时触发?,javascript,websocket,Javascript,Websocket,(1) 打开WebSocket连接 var ws = new WebSocket(url); (2) 建立连接后,发送一条消息,该消息将触发作为响应发送回的blob ws.onopen = function () { ws.send('1000000'); } (3) 响应开始或完成时,onmessage是否触发 ws.onmessage = function () { // Has the entire blob arrived or has the download ju
var ws = new WebSocket(url);
(2) 建立连接后,发送一条消息,该消息将触发作为响应发送回的blob
ws.onopen = function () {
ws.send('1000000');
}
(3) 响应开始或完成时,onmessage
是否触发
ws.onmessage = function () {
// Has the entire blob arrived or has the download just begun?
}
说明应在“收到WebSocket消息时”发送消息事件:
当接收到带有类型和数据数据的WebSocket消息时,用户代理必须将任务排队,以执行以下步骤:
让事件成为使用MessageEvent
接口的事件,事件类型为message
,它不冒泡,不可取消,并且没有默认操作
在WebSocket
对象上调度事件
要理解“当收到WebSocket消息时”的含义,我们必须参考。在WebSocket中,参与者发送包含在一个或多个框架中的消息:
成功握手后,客户端和服务器将数据传输回
以本规范中所指的概念单位表示
“信息”。在网络上,消息由一个或多个帧组成
一旦您理解了这一点,您就可以理解,它定义了短语“已收到WebSocket消息”:
如果框架包含未分割的
消息(第5.4节),据说一条WebSocket消息
已收到带有type/type/和data/data/的。如果框架是
支离破碎的消息,即后续数据的“应用程序数据”
帧被连接起来形成/data/当最后一个片段
接收到的如FIN位(帧FIN)所示,表示_A
已收到WebSocket消息,其中包含data/data/
假设服务器端库的send
方法将其参数视为“消息”,则规范要求客户端在触发消息
事件之前等待整个消息的接收
允许流式传输的服务器端API(例如,它保持消息不完整,并保留FIN位,直到调用某种finish
方法)不会导致客户端触发消息事件,直到消息结束。接收时,或-完成时。如果在响应开始时调用它,我们将有更多的工作要做,以确定消息何时到达-这将使WebSocket降低级别,而不是更高级别的消息抽象。谢谢。你想把它作为一个答案,这样我就可以投赞成票了吗?现在发布了一个更好的答案,所以请随意接受,它应该可以帮助其他人回答同样的问题。:)