3

我需要从 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);
}
4

1 回答 1

2

在 workerws中是一个字符串反序列化的 JSON 对象,而不是 WebSocket 对象。您不能将带有方法的对象传递给工作人员,这意味着工作人员需要回复主线程并且主线程执行ws.send(worker_response).

我怀疑您收到的错误是 DATA_CLONE_ERR 异常或类似情况,因为 WebSocket 对象不能通过结构化克隆算法进行 JSON 序列化。

于 2012-08-08T05:47:21.897 回答