我使用 WebSockets 在浏览器(客户端)中的按钮按下事件上从服务器发送图像。 WebSocket API 的 onmessage() 方法接收到的图像数据是 Blob 结构,分为多个块。问题在于短时间内多次按下按钮事件,收到的块是出故障.
有没有我可以用来区分块的标识符在浏览器端? WebSocket 事件中有一个字段“lastEventId”,但它始终为空。
socket.onmessage = (event) =>
{
console.log(event.data); // Chunked Blob data
console.log(event.lastEventId); // Always empty
// Process data
}
OR
服务器是一个Lighttpd服务器那么是否需要对lighttpd进行任何配置才能为数据块启用某种ID?
我认为您可能会误认为 WebSockets 与 Server-Sent-Events
服务器发送的事件与 WebSockethttps://www.html5rocks.com/en/tutorials/eventsource/basics/#toc-introduction-differences
服务器发送的事件具有 WebSocket 在设计上缺乏的各种功能,例如自动重新连接、事件 ID 以及发送任意事件的能力。
如果您的服务器端脚本是 websocket 端点,那么您可以在服务器发送事件响应中包含一个 id,并在 websocket 帧中正确发送它。
如果您使用的是 lighttpdmod_wstunnel要执行通用的 websocket 框架,那么您必须在脚本中适当地构造 blob 数据,然后客户端必须重建 blob(可能来自多个 websocket 框架)。 lighttpd mod_wstunnel 与 JSON 有效负载配合得很好,因此您可以考虑将(小!)图像作为 Base64 编码 JSON 的一部分发送。这绝不是唯一的方法。
编辑:进一步的文档服务器发送的事件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)