To jest dziwne, kiedy próbuję połączyć się z websocket (to jest tylko problem krawędzi Microsoft) sprawia, że tak na co sekundę odświeżania strony webworker
nie będzie akceptować wiadomości onMessage
przyzwyczajenie spust w ogóle:połączenie z websocket sprawiają, że webworker nie odpowiada w Microsoft edge
rozważyć następujące kwestie:
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;
};
};
Co jest '' connect' this' wewnątrz obsługi zdarzenia? – guest271314
Nie jestem pewien, gdzie widzisz "ten", ale jeśli zazwyczaj pytasz, jaki jest kontekst wewnątrz programu obsługi połączenia, jego obsługi lub okna. nie jestem pewien, jak to jest istotne. –
Czy wywołanie funkcji 'postMessage' jest poprawne? Jaki jest cel sprawdzenia "danych"? Czy ciąg znaków przekazuje się jako wiadomość w części 'javascript'? Czy próbowałeś wywoływać 'worker.postMessage ({type: 'INIT_SOCKET'});' po dołączeniu obsługi zdarzeń 'message'? – guest271314