aboutsummaryrefslogtreecommitdiff
path: root/src/server/Websocket
diff options
context:
space:
mode:
authorMohammad Amoush <47069173+mamoush34@users.noreply.github.com>2020-01-23 11:07:50 -0500
committerMohammad Amoush <47069173+mamoush34@users.noreply.github.com>2020-01-23 11:07:50 -0500
commit09da787bb56157ce6ec08f5e835249f8907ef13d (patch)
tree55c23acba236bdf545ddd68bb733413b504004ba /src/server/Websocket
parent8e8533a7bab97fe9be8c8fb862a7e809da5f137d (diff)
Server side coded added back
Diffstat (limited to 'src/server/Websocket')
-rw-r--r--src/server/Websocket/Websocket.ts56
1 files changed, 52 insertions, 4 deletions
diff --git a/src/server/Websocket/Websocket.ts b/src/server/Websocket/Websocket.ts
index 6dda6956e..ff208d917 100644
--- a/src/server/Websocket/Websocket.ts
+++ b/src/server/Websocket/Websocket.ts
@@ -1,5 +1,5 @@
import { Utils } from "../../Utils";
-import { MessageStore, Transferable, Types, Diff, YoutubeQueryInput, YoutubeQueryTypes } from "../Message";
+import { MessageStore, Transferable, Types, Diff, YoutubeQueryInput, YoutubeQueryTypes, RoomMessage } from "../Message";
import { Client } from "../Client";
import { Socket } from "socket.io";
import { Database } from "../database";
@@ -17,6 +17,8 @@ export namespace WebSocket {
const clients: { [key: string]: Client } = {};
export const socketMap = new Map<SocketIO.Socket, string>();
export let disconnect: Function;
+ let endpoint: io.Server;
+
export async function start(isRelease: boolean) {
await preliminaryFunctions();
@@ -25,10 +27,9 @@ export namespace WebSocket {
async function preliminaryFunctions() {
}
-
function initialize(isRelease: boolean) {
- const endpoint = io();
- endpoint.on("connection", function(socket: Socket) {
+ endpoint = io();
+ endpoint.on("connection", function (socket: Socket) {
_socket = socket;
socket.use((_packet, next) => {
@@ -56,6 +57,10 @@ export namespace WebSocket {
Utils.AddServerHandler(socket, MessageStore.DeleteFields, ids => DeleteFields(socket, ids));
Utils.AddServerHandlerCallback(socket, MessageStore.GetRefField, GetRefField);
Utils.AddServerHandlerCallback(socket, MessageStore.GetRefFields, GetRefFields);
+ Utils.AddServerHandler(socket, MessageStore.NotifyRoommates, message => HandleRoommateNotification(socket, message));
+ Utils.AddServerHandler(socket, MessageStore.HangUpCall, message => HandleHangUp(socket, message));
+ Utils.AddRoomHandler(socket, "create or join", HandleCreateOrJoin);
+
disconnect = () => {
socket.broadcast.emit("connection_terminated", Date.now());
@@ -68,6 +73,49 @@ export namespace WebSocket {
logPort("websocket", socketPort);
}
+
+ function HandleRoommateNotification(socket: Socket, message: RoomMessage) {
+ //socket.broadcast.emit('message', message);
+ console.log("The room that sent this: ", message.room, " and message is : ", message.message);
+ endpoint.sockets.in(message.room).emit('message', message);
+
+ }
+
+ function HandleCreateOrJoin(socket: io.Socket, room: string) {
+ console.log("Received request to create or join room " + room);
+
+
+ let clientsInRoom = endpoint.sockets.adapter.rooms[room];
+ let numClients = clientsInRoom ? Object.keys(clientsInRoom.sockets).length : 0;
+ console.log('Room ' + room + ' now has ' + numClients + ' client(s)');
+
+
+ if (numClients === 0) {
+ socket.join(room);
+ console.log('Client ID ' + socket.id + ' created room ' + room);
+ socket.emit('created', room, socket.id);
+
+ } else if (numClients === 1) {
+ console.log('Client ID ' + socket.id + ' joined room ' + room);
+ endpoint.sockets.in(room).emit('join', room);
+ socket.join(room);
+ socket.emit('joined', room, socket.id);
+ endpoint.sockets.in(room).emit('ready');
+
+ } else {
+ socket.emit('full', room);
+ }
+
+
+
+
+
+ }
+
+ function HandleHangUp(socket: io.Socket, message: string) {
+ console.log("Receive bye from someone");
+ }
+
function HandleYoutubeQuery([query, callback]: [YoutubeQueryInput, (result?: any[]) => void]) {
const { ProjectCredentials } = GoogleCredentialsLoader;
switch (query.type) {