Start to process websocket messages

This commit is contained in:
Pierre HUBERT 2020-03-31 11:38:09 +02:00
parent ba3dd74756
commit a71c3f8a73
2 changed files with 56 additions and 4 deletions

View File

@ -3,6 +3,20 @@
* *
* @author Pierre HUBERT * @author Pierre HUBERT
*/ */
class WsMessage {
constructor(info) {
this.title = info.title
this.id = info.id
this.data = info.data
}
get hasId() {
return this.id.length > 0
}
}
class UserWebSocket { class UserWebSocket {
/** /**
@ -31,7 +45,7 @@ class UserWebSocket {
// Handle incoming messages // Handle incoming messages
this.ws.addEventListener("message", (e) => { this.ws.addEventListener("message", (e) => {
this.ProcessMessage(JSON.parse(e.data)); this.ProcessMessage(new WsMessage(JSON.parse(e.data)));
}) })
} catch(e) { } catch(e) {
@ -83,9 +97,36 @@ class UserWebSocket {
/** /**
* Process an incoming message * Process an incoming message
* *
* @param {any} msg The incoming message * @param {WsMessage} msg The incoming message
*/ */
static async ProcessMessage(msg) { static async ProcessMessage(msg) {
console.error("WS message", msg)
// Check if the message is not associated if any request
if(!msg.hasId)
this.ProcessDetachedMessage(msg)
else
throw Error("Attached message to request are not supported yet!");
}
/**
* Process detached message
* @param {WsMessage} msg Incoming message
*/
static async ProcessDetachedMessage(msg) {
switch(msg.title) {
case "number_notifs":
SendEvent("newNumberNotifs", msg.data)
break;
case "number_unread_conversations":
SendEvent("newNumberUnreadConvs", msg.data)
break;
}
} }
} }

View File

@ -25,7 +25,7 @@ ComunicWeb.components.notifications.service = {
*/ */
init: async function(target, auto_hide, target_conversations){ init: async function(target, auto_hide, target_conversations){
processResponse = () => { const processResponse = () => {
if(!target.isConnected || this.count_unread_notifications < 0 || this.count_unread_conv < 0) if(!target.isConnected || this.count_unread_notifications < 0 || this.count_unread_conv < 0)
return; return;
@ -74,6 +74,17 @@ ComunicWeb.components.notifications.service = {
console.error("Could not get the number of unread notifications!") console.error("Could not get the number of unread notifications!")
console.error(e); console.error(e);
} }
// Register to events
document.addEventListener("newNumberNotifs", e => {
this.count_unread_notifications = e.detail;
processResponse();
});
document.addEventListener("newNumberUnreadConvs", e => {
this.count_unread_conv = e.detail;
processResponse();
});
}, },
} }