Der*_*son 5 javascript websocket
(1)打开一个WebSocket连接。
var ws = new WebSocket(url);
Run Code Online (Sandbox Code Playgroud)
(2)建立连接后,发送一条消息,该消息将触发作为响应发送回的Blob。
ws.onopen = function () {
ws.send('1000000');
}
Run Code Online (Sandbox Code Playgroud)
(3)onmessage
在响应开始或完成时触发?
ws.onmessage = function () {
// Has the entire blob arrived or has the download just begun?
}
Run Code Online (Sandbox Code Playgroud)
WebSocket API 的 W3C 规范规定message
“当收到 WebSocket 消息时”应该调度一个事件:
当收到类型为type和 data data 的WebSocket 消息时,用户代理必须将任务排队以执行以下步骤:
...
- 设event为使用该接口的事件
MessageEvent
,事件类型为message
,该事件不会冒泡,不可取消,并且没有默认操作。
...
- 在对象上调度事件
WebSocket
。
要理解“收到 WebSocket 消息时”的含义,我们必须查阅RFC 6455“ WebSocket 协议”。在 WebSocket 中,参与者发送包含在一个或多个帧中的消息:
成功握手后,客户端和服务器以本规范中称为“消息”的概念单元来回传输数据。在网络上,消息由一个或多个帧组成。
一旦你理解了这一点,你就可以理解RFC 6455 的第 6 节,它定义了短语“ A WebSocket Message Has Been Received ”:
如果帧包含未分段的消息(第 5.4 节),则表示“已接收到 WebSocket 消息”,类型为 /type/,数据为 /data/。如果该帧是分段消息的一部分,则后续数据帧的“应用程序数据”将连接起来形成/data/。 当 FIN 位(frame-fin)指示接收到最后一个片段时,表示_已接收到带有数据 /data/...的WebSocket 消息_
假设服务器端库的send
方法将其参数视为“消息”,则规范要求客户端在触发事件之前等待收到整个消息message
。
允许流式传输的服务器端 API(例如,它保持消息不完整并保留 FIN 位,直到调用某种方法)不会导致客户端在消息结束之前finish
触发事件。message
归档时间: |
|
查看次数: |
1213 次 |
最近记录: |