【发布时间】:2015-09-05 15:24:36
【问题描述】:
我的网站使用网络套接字连接到实时数据流。数据流只是一系列 JSON 消息。在 websocket 处理程序中,当我收到一条消息时,我会解析 JSON 并将一些数据点添加到图表中。
我的问题是:将 websocket 移到它自己的工作线程上有意义吗?
起初我想我可以在它自己的线程上解析 JSON 并将反序列化的对象发送给 UI 线程,这可能会节省一些时间。不幸的是,看起来 postMessage 要求我发送字符串。因此,在自己的线程上解析 JSON 没有任何好处。
在自己的线程上接收网络套接字数据似乎也没有任何好处——我认为浏览器已经在自己的线程上接收数据并传递我的 javascript 回调在适当的时候。
因此,鉴于实时数据接收没有进行任何后期处理——它主要是直接到 UI——将 websocket 连接放在 web worker 上是否有意义?
谢谢! 安德鲁
【问题讨论】:
-
恕我直言,只有在将一些压缩结果发送回主线程之前对 JSON 消息进行大量(CPU 繁重)处理时才有意义。
-
这个问题太宽泛了,因为它确实发生在您对数据进行了多少处理。让工人增加更多的开销,但如果你正在做一些压缩或其他什么,最好在工人中做。
标签: javascript html multithreading websocket web-worker