我需要从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);
}
答案 0 :(得分:2)
在worker ws
中是字符串反序列化的JSON对象,而不是WebSocket对象。你不能将带有方法的对象传递给worker,这意味着worker需要回复主线程,主线程执行ws.send(worker_response)
。
我怀疑你得到的错误是DATA_CLONE_ERR异常或者类似,因为WebSocket对象不能通过structured clone algorithm进行JSON序列化。