diff --git a/app/main/chat.php b/app/Main/Chat.php similarity index 100% rename from app/main/chat.php rename to app/Main/Chat.php diff --git a/app/websockets.php b/app/WebSockets.php similarity index 100% rename from app/websockets.php rename to app/WebSockets.php diff --git a/index.html b/index.html index 6b18cc0..46b38a6 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Chat - + diff --git a/js/app.js b/js/app.js index 99622b5..57325ae 100644 --- a/js/app.js +++ b/js/app.js @@ -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); diff --git a/js/worker/chat.js b/js/worker/chat.js index d0e167b..6e3c509 100644 --- a/js/worker/chat.js +++ b/js/worker/chat.js @@ -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(); } }; diff --git a/js/worker/message.js b/js/worker/message.js index ece4266..34ab7c4 100644 --- a/js/worker/message.js +++ b/js/worker/message.js @@ -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; } };