答え:
私は当初、「 http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-web-workers/ 」というブログで、こんにちは SharedWorker の例を作成することから始めました。この記事だけを使用しないでください!!!
私を妨げていた唯一の問題は、そのブログ " var port = event.source
" -- これは無効です!
使用しvar port = event.ports[0]
ます。
PS。共有ワーカーにはwindow object
soがありませんalert
、console.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);
ハッピーコーディング:)