diff options
author | Mohammad Amoush <47069173+mamoush34@users.noreply.github.com> | 2020-02-07 21:52:49 -0500 |
---|---|---|
committer | Mohammad Amoush <47069173+mamoush34@users.noreply.github.com> | 2020-02-07 21:52:49 -0500 |
commit | d3db291c2587bf1284f9d0a8ee7d06fd8ec7a252 (patch) | |
tree | bbd1fef6e9cccf813318d0bf0088698a1c358d46 /src/server/Websocket/Websocket.ts | |
parent | ce5980ddf7cdd247f8e31be1c437b9c40d46e29d (diff) |
Another refactor with modules
Diffstat (limited to 'src/server/Websocket/Websocket.ts')
-rw-r--r-- | src/server/Websocket/Websocket.ts | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/server/Websocket/Websocket.ts b/src/server/Websocket/Websocket.ts index ff208d917..96694bf72 100644 --- a/src/server/Websocket/Websocket.ts +++ b/src/server/Websocket/Websocket.ts @@ -10,6 +10,7 @@ import { GoogleCredentialsLoader } from "../credentials/CredentialsLoader"; import { logPort } from "../ActionUtilities"; import { timeMap } from "../ApiManagers/UserManager"; import { green } from "colors"; +import { networkInterfaces } from "os"; export namespace WebSocket { @@ -40,6 +41,55 @@ export namespace WebSocket { next(); }); + // convenience function to log server messages on the client + function log(message?: any, ...optionalParams: any[]) { + socket.emit('log', ['Message from server:', message, ...optionalParams]); + } + + socket.on('message', function (message) { + log('Client said: ', message); + // for a real app, would be room-only (not broadcast) + socket.broadcast.emit('message', message); + }); + + socket.on('create or join', function (room) { + log('Received request to create or join room ' + room); + + var clientsInRoom = socket.adapter.rooms[room]; + var numClients = clientsInRoom ? Object.keys(clientsInRoom.sockets).length : 0; + log('Room ' + room + ' now has ' + numClients + ' client(s)'); + + if (numClients === 0) { + socket.join(room); + log('Client ID ' + socket.id + ' created room ' + room); + socket.emit('created', room, socket.id); + + } else if (numClients === 1) { + log('Client ID ' + socket.id + ' joined room ' + room); + socket.in(room).emit('join', room); + socket.join(room); + socket.emit('joined', room, socket.id); + socket.in(room).emit('ready'); + } else { // max two clients + socket.emit('full', room); + } + }); + + socket.on('ipaddr', function () { + var ifaces = networkInterfaces(); + for (var dev in ifaces) { + ifaces[dev].forEach(function (details) { + if (details.family === 'IPv4' && details.address !== '127.0.0.1') { + socket.emit('ipaddr', details.address); + } + }); + } + }); + + socket.on('bye', function () { + console.log('received bye'); + }); + Utils.Emit(socket, MessageStore.Foo, "handshooken"); Utils.AddServerHandler(socket, MessageStore.Bar, guid => barReceived(socket, guid)); @@ -61,7 +111,6 @@ export namespace WebSocket { Utils.AddServerHandler(socket, MessageStore.HangUpCall, message => HandleHangUp(socket, message)); Utils.AddRoomHandler(socket, "create or join", HandleCreateOrJoin); - disconnect = () => { socket.broadcast.emit("connection_terminated", Date.now()); socket.disconnect(true); |