0

この投稿は、回答を見つけるために高低を検索したため、回答する質問です。JavaScript で SharedWorker を作成するときと同じくらい基本的なものです。

解決するのに何時間もかかった奇妙な問題に遭遇しました。ウィンドウにメッセージを投稿するための基本的な (実際の) SharedWorker を取得するだけでした。

今、私のコードで使用している

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

他のすべては、ブログ記事/チュートリアル全体で非常に標準的です.

なぜこれがうまくいかないのですか?

4

1 に答える 1

1

答え:

私は当初、「 http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-web-workers/ 」というブログで、こんにちは SharedWorker の例を作成することから始めました。この記事だけを使用しないでください!!!

私を妨げていた唯一の問題は、そのブログ " var port = event.source" -- これは無効です!

使用しvar port = event.ports[0]ます。

PS。共有ワーカーにはwindow objectsoがありません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);

ハッピーコーディング:)

于 2013-07-11T07:04:05.147 に答える