SharedWorker不工作......更不用说共享了

时间:2013-07-11 07:04:05

标签: javascript web shared

这篇文章是一个我将回答的问题,因为我已经搜索了高低,找到答案。它非常基础 - 在JavaScript中创建SharedWorker时可以获得基本的功能。

我遇到了一个奇怪的问题,花了我几个小时来解决。只是为了让一个基本的(真正的)SharedWorker将消息发布到窗口。

现在,在我的代码中我正在使用

...
var port = event.source
...

其他所有内容都是博客文章/教程的标准。

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

解答:

我最初是在博客“http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-web-workers/”上开始做一个hello SharedWorker示例。不要只使用这篇文章!!!

阻碍我的唯一问题是那个博客“var port = event.source” - 这是无效的!

USE var port = event.ports[0]

PS。共享工作人员没有window object,因此alertconsole.log等不起作用。

工作代码:

的index.html

`<div>
  <b>Welcome :)</b>
</div>
<script src="/js/main.js"></script>`

<强> main.js:

var WorkerIO = new SharedWorker('/js/worker.io.js', 'NDN-Worker');

console.log('WorkerIO:', WorkerIO);

WorkerIO.port.addEventListener('message', function(eventM){
  console.log('OnMessage:', eventM);
}, false);

WorkerIO.port.start();
WorkerIO.port.postMessage('This is a message from the client!');

WorkerIO.port.addEventListener('error', function(e){
  throw new Error('WorkerIO Error: could not open SharedWorker', e);
}, false);


//importScripts();

Worker.io.js

var ports = [];
self.addEventListener('connect', function(eventC){
  'use strict';

  ports = eventC.ports;
  var port = ports[0];

  port.postMessage('WorkerIO: connected');

  console.log('o************ OnConnect ************o\n\n'
    , '\t ports:', ports, '\n'
    , '\t port:', port, '\n'
  );

  port.addEventListener('message', function(eventM){
    var data = eventM.data;
    console.log('o************ OnMessage ************o\n\n'
      , '\t data:', data, '\n'
    );
    port.postMessage('from "clientPort": ' + clientPort.toString() + ', with love :)');
  }, false);

  port.start();
}, false);

快乐编码:)