WIP chatApp
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<title>Chat</title>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.3/handlebars.min.js"></script>
|
||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
var domain = location.host.replace('www.','');
|
||||
var workerProtocol = (window.location.protocol === 'https:') ? 'wss:' : 'ws:';
|
||||
var workerUri = workerProtocol + '//' + domain + ':8080';
|
||||
|
||||
window.onload = function (){
|
||||
|
||||
var msgWorker = this.msgWorker;
|
||||
@@ -21,6 +25,9 @@ window.onload = function (){
|
||||
setSocketStatus(false);
|
||||
break;
|
||||
}
|
||||
|
||||
// show webSocket info
|
||||
console.info(load.socket);
|
||||
}, false);
|
||||
|
||||
worker.onerror = function(e){
|
||||
@@ -31,7 +38,7 @@ window.onload = function (){
|
||||
|
||||
var msgWorkerInit = new msgWorker('ws:init');
|
||||
msgWorkerInit.data({
|
||||
uri: 'ws://wstest.local:8080'
|
||||
uri: workerUri
|
||||
});
|
||||
worker.port.postMessage(msgWorkerInit);
|
||||
|
||||
|
||||
@@ -12,17 +12,19 @@ var initSocket = function(uri){
|
||||
socket = new WebSocket(uri);
|
||||
|
||||
socket.onopen = function(e){
|
||||
msgWorkerOpen.socket = this;
|
||||
|
||||
//
|
||||
ports[ports.length - 1].postMessage(msgWorkerOpen);
|
||||
|
||||
socket.onmessage = function(e){
|
||||
|
||||
let load = JSON.parse(e.data);
|
||||
var msgWorkerSend = new msgWorker('ws:send');
|
||||
|
||||
let msgWorkerSend = new msgWorker('ws:send');
|
||||
msgWorkerSend.socket = this;
|
||||
|
||||
msgWorkerSend.data(load);
|
||||
|
||||
for (var i = 0; i < ports.length; i++) {
|
||||
for (let i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerSend);
|
||||
}
|
||||
|
||||
@@ -32,7 +34,13 @@ var initSocket = function(uri){
|
||||
};
|
||||
|
||||
socket.onclose = function(){
|
||||
console.info('ws: onclose()');
|
||||
let msgWorkerWsClosed = new msgWorker('ws:closed');
|
||||
msgWorkerWsClosed.socket = this;
|
||||
|
||||
console.log(socket.readyState);
|
||||
for (let i = 0; i < ports.length; i++) {
|
||||
ports[i].postMessage(msgWorkerWsClosed);
|
||||
}
|
||||
};
|
||||
|
||||
socket.onerror = function(){
|
||||
@@ -46,7 +54,7 @@ var initSocket = function(uri){
|
||||
};
|
||||
|
||||
self.addEventListener('connect', function (event){
|
||||
var port = event.ports[0];
|
||||
let port = event.ports[0];
|
||||
ports.push(port);
|
||||
|
||||
port.addEventListener('message', function (e){
|
||||
@@ -61,7 +69,7 @@ self.addEventListener('connect', function (event){
|
||||
socket.send(JSON.stringify(load.data()));
|
||||
break;
|
||||
case 'ws:close':
|
||||
closeSocket(socket);
|
||||
closeSocket();
|
||||
break;
|
||||
case 'ws:notify':
|
||||
notifications = load.data().status;
|
||||
@@ -73,18 +81,10 @@ self.addEventListener('connect', function (event){
|
||||
}, false);
|
||||
|
||||
|
||||
|
||||
// Util ================================================================
|
||||
var closeSocket = function(socket){
|
||||
var closeSocket = function(){
|
||||
// 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,7 +1,24 @@
|
||||
var msgWorker = class MessageWorker {
|
||||
|
||||
constructor(cmd){
|
||||
// message properties
|
||||
this.cmd = cmd;
|
||||
this.msgBody = null;
|
||||
|
||||
// webSocket props
|
||||
this.ws = {
|
||||
url: undefined,
|
||||
readyState: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
set socket(socket){
|
||||
this.ws.url = socket.url;
|
||||
this.ws.readyState = socket.readyState;
|
||||
}
|
||||
|
||||
get socket(){
|
||||
return this.ws;
|
||||
}
|
||||
|
||||
get command(){
|
||||
@@ -13,6 +30,7 @@ var msgWorker = class MessageWorker {
|
||||
if(data){
|
||||
this.msgBody = data;
|
||||
}
|
||||
|
||||
return this.msgBody;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user