WIP chatApp

This commit is contained in:
Exodus4D
2016-11-12 18:17:33 +01:00
parent d75ccf7119
commit 22ed9caa97
6 changed files with 43 additions and 18 deletions

View File

@@ -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>

View File

@@ -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);

View File

@@ -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();
}
};

View File

@@ -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;
}
};