Last active
April 28, 2020 19:23
-
-
Save vivek1794/534c9a47a7d119af564fe2aeb369fb51 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var os = require('os'); | |
var nodeStatic = require('node-static'); | |
var https = require('https'); | |
var socketIO = require('socket.io'); | |
var fs = require("fs"); | |
var options = { | |
key: fs.readFileSync('key.pem'), | |
cert: fs.readFileSync('cert.pem') | |
}; | |
var fileServer = new(nodeStatic.Server)(); | |
var app = https.createServer(options,function(req, res) { | |
fileServer.serve(req, res); | |
}).listen(1794); | |
var io = socketIO.listen(app); | |
io.sockets.on('connection', function(socket) { | |
// convenience function to log server messages on the client | |
function log() { | |
var array = ['Message from server:']; | |
array.push.apply(array, arguments); | |
socket.emit('log', array); | |
} | |
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 numClients = io.sockets.sockets.length; | |
log('Room ' + room + ' now has ' + numClients + ' client(s)'); | |
if (numClients === 1) { | |
socket.join(room); | |
log('Client ID ' + socket.id + ' created room ' + room); | |
socket.emit('created', room, socket.id); | |
} else if (numClients === 2) { | |
log('Client ID ' + socket.id + ' joined room ' + room); | |
io.sockets.in(room).emit('join', room); | |
socket.join(room); | |
socket.emit('joined', room, socket.id); | |
io.sockets.in(room).emit('ready'); | |
} else { // max 5 clients | |
socket.emit('full', room); | |
} | |
}); | |
socket.on('ipaddr', function() { | |
var ifaces = os.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'); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment