HTML5 Websocket within Webworker
HTML5 Websocket within Webworker
我已经设法让websocket在使用Chrome的webworker中工作,但仅用于接收数据。当我尝试发送数据时,我会遇到DOM异常,有人能发送数据吗?
这是我为我的网络工作者准备的。
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
}
在发送第一条消息之前,您必须侦听onopen-websocket事件。
socket.onopen = function(){
// send some message
};
试试这个:
var WebSocketStateEnum = {CONNECTING: 0, OPEN: 1, CLOSING: 2, CLOSED: 3};
var wsChannel;
var msgQueue = [];
// Using like this:
sendMessage(_ => {
wsChannel.send('message...'); // This will wait until the connection open, unless it is already opened
});
function sendMessage(task) {
if (!wsChannel || wsChannel.readyState != WebSocketStateEnum.OPEN) {
msgQueue.push(task);
} else {
task();
}
if (!wsChannel) {
wsChannel = new WebSocket('ws://your-url');
wsChannel.onopen = function() {
while (msgQueue.length > 0) {
msgQueue.shift()();
}
}
wsChannel.onmessage = function(evt) {
// message received here
}
wsChannel.onclose = function(evt) {
wsChannel = null;
}
wsChannel.onerror = function(evt) {
if (wsChannel.readyState == WebSocketStateEnum.OPEN) {
wsChannel.close();
} else {
wsChannel = null;
}
}
}
}
相关文章:
- 如何让Webworker真正响应,以及为什么setTimeout()不起作用
- Ui-view within ui-view
- Fancybox within Jquery Cycle Slide
- 处理由无法访问的代码创建的来自Webworker的消息
- JQuery, Java Servlet Examplet within Eclipse WTP
- 如果我向同一个webworker发送多条消息,它会将它们排队并按顺序处理吗
- 终止无响应/无限循环的WebWorker(Javascript)
- 正在等待webworker完成
- webworker中的clearInterval不工作
- php ajax within ajax
- webkitPersistentStorage 和 webkitTemporaryStorage 在 WebWorker
- Emscripten webworker-拥有消息和依赖关系
- 用于在 MapBox FeatureLayer 中添加标记的 WebWorker
- Javascript -add onlick within a function
- array within a switch javascript
- HREF within an IFrame with JQuery
- CFML within Javascript
- 不能在 WebWorker (NWJS) 中要求节点模块
- Chrome.extension.sendMessage within chrome.tabs.create
- HTML5 Websocket within Webworker