所以這很奇怪,當我試圖連接到websocket(這只是一個微軟邊緣問題)它使得每隔一秒刷新一次webworker
不會接受消息onMessage
不會觸發可言:連接到websocket使webworker在微軟邊緣無響應
考慮以下幾點:
main.js
var worker = new Worker("webworker.js");
worker.postMessage({ type: 'INIT_SOCKET' });
worker.addEventListener('message', (event) => {
let data = event.data;
if (typeof data === 'string') {
data = JSON.parse(data);
}
if (data.type === 'SOCKET_INITIALIZED') {
console.log('inititalized');
}
});
個webworker.js
var io = require('socket.io-client');
var socket;
onmessage = function(event) {
var data = event.data;
console.log('got a event');
if (typeof data === 'string') {
data = JSON.parse(data);
}
switch (data.type) {
case 'INIT_SOCKET':
try {
socket = io('xxxx', { transports: [ 'websocket' ], secure: true }); // this line causes the error
socket.on('connect', function() {
postMessage({
type: Consts.SOCKET_INITIALIZED
});
});
} catch(e) {
console.log('some error ', e);
}
break;
};
};
什麼是'this'內'connect'事件處理程序? – guest271314
我不確定你在哪裏看到'this',但是如果你通常詢問連接處理器內部的上下文是什麼,它的處理器或窗口是什麼。我不知道這是如何相關的。 –
使用正確的上下文調用了「postMessage」嗎?檢查'data'的目的是什麼?是'javascript'的一部分傳遞給消息的字符串?您是否嘗試過在附加'message'事件處理函數後調用'worker.postMessage({type:'INIT_SOCKET'});'' – guest271314