如何访问webworkers中的websockets?

时间:2012-08-08 05:42:57

标签: javascript html5 websocket web-worker fileapi

我需要从webworkers发送websocket调用,我怎么能得到它。我不这么认为是否有来自用户代理的支持。如果可以获得支持,请举例说明。

示例我正在尝试的东西。

var ws = new WebSocket(url);
var worker=new Worker(worker.js);

ws.onmessage=function(e){
worker.postMessage({ws:ws,data:e.data});
}

worker.js

onmessage=function(e){
  var ws=e.data.ws;
  var data=e.data.data;
  var request=someProcess(data);

  ws.send(request);
}

1 个答案:

答案 0 :(得分:2)

在worker ws中是字符串反序列化的JSON对象,而不是WebSocket对象。你不能将带有方法的对象传递给worker,这意味着worker需要回复主线程,主线程执行ws.send(worker_response)

我怀疑你得到的错误是DATA_CLONE_ERR异常或者类似,因为WebSocket对象不能通过structured clone algorithm进行JSON序列化。