2013-08-01 29 views
9

Tôi đã quản lý để có được các ổ cắm web hoạt động bên trong một webworker bằng cách sử dụng Chrome, nhưng chỉ để nhận dữ liệu. Khi tôi cố gắng gửi dữ liệu tôi nhận được ngoại lệ DOM, có ai quản lý để gửi dữ liệu không?HTML5 Websocket trong Webworker

Đây là những gì tôi có cho nhân viên web của mình.

self.addEventListener('message', function(e) { 
var data = e.data; 

switch (data.cmd) { 
    case 'init': 
     self.postMessage("Initialising Web Workers..."); 
     testWS(); 
     break; 
    default: 
     self.postMessage('Unknown command: ' + data.msg); 
    }; 
}, false); 

function testWS() { 
    var connectionAddr = "ws://localhost:8003"; 
    var socket = new WebSocket(connectionAddr); 
    socket.onmessage = function(event) { 
     self.postMessage('Websocket : ' + event.data); 
    }; 

    socket.onclose = function(event) { 
    }; 

    function send(message) { 
     socket.send(message); 
    } 

    send("hello"); //Here is where the exception is thrown 
} 

Trả lời

17

Bạn phải nghe sự kiện websocket onopen trước khi gửi thư đầu tiên của mình.

socket.onopen = function(){ 
    // send some message 
}; 
+0

Có bạn đã chính xác chỉ ra rằng trước khi nhìn lại đây, kết nối không mở và đó là vấn đề. Chúc mừng – Jack