Javascript WebSocket.onmessage何时触发?

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

(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 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降低级别,而不是更高级别的消息抽象。谢谢。你想把它作为一个答案,这样我就可以投赞成票了吗?现在发布了一个更好的答案,所以请随意接受,它应该可以帮助其他人回答同样的问题。:)