WIP chatApp
This commit is contained in:
@@ -2,7 +2,7 @@ window.onload = function (){
|
||||
|
||||
var msgWorker = this.msgWorker;
|
||||
|
||||
var worker = new SharedWorker('js/worker/chat_new.js', 'worker_name');
|
||||
var worker = new SharedWorker('js/worker/chat.js', 'worker_name');
|
||||
|
||||
worker.port.addEventListener('message', function(e){
|
||||
let load = e.data;
|
||||
|
||||
@@ -1,83 +1,86 @@
|
||||
'use strict';
|
||||
self.importScripts('message.js');
|
||||
|
||||
var socket = new WebSocket(self.name);
|
||||
var socket = null;
|
||||
var ports = [];
|
||||
var notifications = false;
|
||||
var tmp = self;
|
||||
console.log(socket._socket);
|
||||
|
||||
self.addEventListener('connect', function (event) {
|
||||
var initSocket = function(uri){
|
||||
var msgWorkerOpen = new msgWorker('ws:open');
|
||||
|
||||
if(socket === null){
|
||||
socket = new WebSocket(uri);
|
||||
|
||||
socket.onopen = function(e){
|
||||
|
||||
//
|
||||
ports[ports.length - 1].postMessage(msgWorkerOpen);
|
||||
|
||||
socket.onmessage = function(e){
|
||||
|
||||
let load = JSON.parse(e.data);
|
||||
var msgWorkerSend = new msgWorker('ws:send');
|
||||
msgWorkerSend.data(load);
|
||||
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerSend);
|
||||
}
|
||||
|
||||
if(notifications){
|
||||
new Notification('Message: ' + load.text);
|
||||
}
|
||||
};
|
||||
|
||||
socket.onclose = function(){
|
||||
console.info('ws: onclose()');
|
||||
};
|
||||
|
||||
socket.onerror = function(){
|
||||
console.error('ws: onerror()');
|
||||
};
|
||||
}
|
||||
}else{
|
||||
// socket still open
|
||||
ports[ports.length - 1].postMessage(msgWorkerOpen);
|
||||
}
|
||||
};
|
||||
|
||||
self.addEventListener('connect', function (event){
|
||||
var port = event.ports[0];
|
||||
ports.push(port);
|
||||
console.log('B: ' + socket.readyState);
|
||||
port.onmessage = function (event) {
|
||||
let load = event.data;
|
||||
|
||||
port.addEventListener('message', function (e){
|
||||
let load = e.data;
|
||||
load.__proto__ = msgWorker.prototype;
|
||||
|
||||
console.log('C: ' + socket.readyState);
|
||||
|
||||
switch(load.command){
|
||||
case 'send':
|
||||
case 'ws:init':
|
||||
initSocket(load.data().uri);
|
||||
break;
|
||||
case 'ws:send':
|
||||
socket.send(JSON.stringify(load.data()));
|
||||
break;
|
||||
case 'WS_close':
|
||||
case 'ws:close':
|
||||
closeSocket(socket);
|
||||
break;
|
||||
case 'notify':
|
||||
case 'ws:notify':
|
||||
notifications = load.data().status;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
if(socket.readyState === socket.OPEN){
|
||||
var msgWorkerOpen = new msgWorker('ready');
|
||||
port.postMessage(msgWorkerOpen);
|
||||
}
|
||||
}, false);
|
||||
|
||||
port.start();
|
||||
}, false);
|
||||
|
||||
|
||||
socket.onopen = function(e){
|
||||
|
||||
var msgWorkerOpen = new msgWorker('open');
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerOpen);
|
||||
}
|
||||
|
||||
socket.onmessage = function(e){
|
||||
let load = JSON.parse(e.data);
|
||||
var msgWorkerSend = new msgWorker('send');
|
||||
msgWorkerSend.data(load);
|
||||
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerSend);
|
||||
}
|
||||
|
||||
if(notifications){
|
||||
new Notification('Message: ' + load.text);
|
||||
}
|
||||
};
|
||||
|
||||
socket.onclose = function(){
|
||||
|
||||
console.log(this.remoteAddress);
|
||||
console.info('ws: onclose()');
|
||||
};
|
||||
|
||||
socket.onerror = function(){
|
||||
console.error('ws: onerror()');
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
// Util ================================================================
|
||||
var closeSocket = function(socket){
|
||||
// only close if active
|
||||
console.log(socket.readyState + ' - ' + socket.OPEN);
|
||||
if(socket.readyState === socket.OPEN){
|
||||
// send "close" event before close call
|
||||
var msgWorkerWsClosed = new msgWorker('WS_closed');
|
||||
var msgWorkerWsClosed = new msgWorker('ws:closed');
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerWsClosed);
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
'use strict';
|
||||
self.importScripts('message.js');
|
||||
|
||||
var socket = null;
|
||||
var ports = [];
|
||||
var notifications = false;
|
||||
|
||||
var initSocket = function(uri){
|
||||
var msgWorkerOpen = new msgWorker('ws:open');
|
||||
|
||||
if(socket === null){
|
||||
socket = new WebSocket(uri);
|
||||
|
||||
socket.onopen = function(e){
|
||||
|
||||
//
|
||||
ports[ports.length - 1].postMessage(msgWorkerOpen);
|
||||
|
||||
socket.onmessage = function(e){
|
||||
|
||||
let load = JSON.parse(e.data);
|
||||
var msgWorkerSend = new msgWorker('ws:send');
|
||||
msgWorkerSend.data(load);
|
||||
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerSend);
|
||||
}
|
||||
|
||||
if(notifications){
|
||||
new Notification('Message: ' + load.text);
|
||||
}
|
||||
};
|
||||
|
||||
socket.onclose = function(){
|
||||
console.info('ws: onclose()');
|
||||
};
|
||||
|
||||
socket.onerror = function(){
|
||||
console.error('ws: onerror()');
|
||||
};
|
||||
}
|
||||
}else{
|
||||
// socket still open
|
||||
ports[ports.length - 1].postMessage(msgWorkerOpen);
|
||||
}
|
||||
};
|
||||
|
||||
self.addEventListener('connect', function (event){
|
||||
var port = event.ports[0];
|
||||
ports.push(port);
|
||||
|
||||
port.addEventListener('message', function (e){
|
||||
let load = e.data;
|
||||
load.__proto__ = msgWorker.prototype;
|
||||
|
||||
switch(load.command){
|
||||
case 'ws:init':
|
||||
initSocket(load.data().uri);
|
||||
break;
|
||||
case 'ws:send':
|
||||
socket.send(JSON.stringify(load.data()));
|
||||
break;
|
||||
case 'ws:close':
|
||||
closeSocket(socket);
|
||||
break;
|
||||
case 'ws:notify':
|
||||
notifications = load.data().status;
|
||||
break;
|
||||
}
|
||||
}, false);
|
||||
|
||||
port.start();
|
||||
}, false);
|
||||
|
||||
|
||||
|
||||
// Util ================================================================
|
||||
var closeSocket = function(socket){
|
||||
// only close if active
|
||||
console.log(socket.readyState + ' - ' + socket.OPEN);
|
||||
if(socket.readyState === socket.OPEN){
|
||||
// send "close" event before close call
|
||||
var msgWorkerWsClosed = new msgWorker('ws:closed');
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerWsClosed);
|
||||
}
|
||||
|
||||
socket.close();
|
||||
}
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
var msgWorker = class MsgWorkerTest {
|
||||
var msgWorker = class MessageWorker {
|
||||
constructor(cmd){
|
||||
this.cmd = cmd;
|
||||
this.msgBody = null;
|
||||
|
||||
Reference in New Issue
Block a user