aboutsummaryrefslogtreecommitdiff
path: root/src/server/Websocket/Websocket.ts
diff options
context:
space:
mode:
authorMohammad Amoush <47069173+mamoush34@users.noreply.github.com>2020-02-07 21:52:49 -0500
committerMohammad Amoush <47069173+mamoush34@users.noreply.github.com>2020-02-07 21:52:49 -0500
commitd3db291c2587bf1284f9d0a8ee7d06fd8ec7a252 (patch)
treebbd1fef6e9cccf813318d0bf0088698a1c358d46 /src/server/Websocket/Websocket.ts
parentce5980ddf7cdd247f8e31be1c437b9c40d46e29d (diff)
Another refactor with modules
Diffstat (limited to 'src/server/Websocket/Websocket.ts')
-rw-r--r--src/server/Websocket/Websocket.ts51
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);