WebSocket在浏览器中的消息监听器回调执行

时间:2019-02-06 11:52:07

标签: javascript websocket

我的问题很简单。给出以下代码段:

// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');

// Listen for messages
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
});

在事件循环上,on'message'回调是否将作为 micro macro 任务执行?

长话

我问的原因是,我们曾经发生过,UI线程和事件循环似乎完全被大量WS消息的处理所占据,而没有执行许多其他回调。

因此,我的结论是WS消息处理程序的回调被安排为微任务。由于它们太多,因此无法及时执行下一个刻度,因此无法及时执行下一组宏任务。

解决方案是将WS处理移至Web Worker,在Web Worker中,我们利用了单独的线程,UI线程又可以自由处理渲染了。

0 个答案:

没有答案