关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
去年关闭。
Improve this question
我正在使用 WebSockets 运行一些测试。
对于测试,我使用了基于 Alchemy-Websockets .NET 的服务器。
Web 应用程序打开多个窗口,用于监控不同的服务和系统。
我对服务器必须发送很多的高负载情况特别感兴趣
事件的客户端,以反射(reflect)实时更新。我希望 GUI 能够完全响应并在实时用户体验中以网格和图表形式呈现数据。
我在主窗口线程中创建了 WebSocket,并在每条传入消息中添加了一个条目到网格用于显示的数组 (SlickGrid)。为了使 GUI 正常工作,我添加了 20 毫秒的 setInterval 来呈现网格更新,一切正常,速度非常快。
问题是将 WebSocket 移动到工作线程是可取的还是推荐的。在阅读有关工作线程的文章时,我在用例中看到了在线程中处理 I/O 的建议。
我认为这只有在阻塞时才有意义。
据我所知,WebSocket 是异步的,不会阻塞。我在某处读到
它由浏览器在内部线程中实现,这是有道理的。
我考虑将 WebSocket 移动到一个工作器中,允许工作器在将其移动到主窗口之前缓冲或聚合一些数据,在高事件率的情况下,我看到以下方法:
在我向主线程发送消息的每一步中,GUI 都卡住了
这是有道理的)。
将 WebSocket 留在主线程上也不理想。在来自服务器的高负载的情况下,GUI 不会优先处理 WebSocket 传入消息事件。
在工作线程中收集数据,似乎我可能会错过高负载期间的实时更新,因为工作线程正在缓冲。
工作线程的另一个问题似乎是数据重复,这可以通过较新的可传输对象来解决,但不确定所有浏览器是否支持它。
为什么不在主窗口上托管 WebSocket?
那么最佳实践是什么?
最佳答案
将 WebSocket 移至 Worker 的原因只有两个。
关于javascript - 将 WebSockets 移入工作线程的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534583/