Skip to content

Instantly share code, notes, and snippets.

@nadeemelahi
Created May 12, 2014 23:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nadeemelahi/922fc3dc62405a59d341 to your computer and use it in GitHub Desktop.
Save nadeemelahi/922fc3dc62405a59d341 to your computer and use it in GitHub Desktop.
socket.io peerjs clients list
var io = require('socket.io').listen(httpServer);
httpServer.listen(8080);
io.set('log level', 1);
var peerWebRTC = io.of('/peerWebRTC');
var PeerServer = require('peer').PeerServer;
var idIncr = 0;
var clientpeerIds = [];
var clientData = {}; /* by clientpeerIds */
peerWebRTC.on('connection', function(socket){
socket.on('profile-image', function(profileImg){
console.log('profile-image');
socket.get("peerID", function(err, peerID){
if(err) console.error(err);
else {
var filename = __dirname + "/files/peerjs/profileImages/" + peerID + ".png";
console.log('filename: ' + filename);
console.log(profileImg.length);
socket.broadcast.emit("newProfileImg", peerID, profileImg);
console.log('did broadcast');
}
});
});
socket.on('verifyCookie', function( verifySignedCookie, scb){
var decodedUsername = cookie.unsign(verifySignedCookie, 'secret')
scb(decodedUsername);
if(!decodedUsername){
console.log("ERROR: COOKIE TAMPERING");
initializeClients( "client" + ++idIncr );
} else {
initializeClients(decodedUsername);
}
});
socket.on('noCookie', function(){
initializeClients( "client" + ++idIncr )
});
function initializeClients(peerID){
socket.set('peerID', peerID, function(){
socket.emit('initializeClientPage', peerID, clientpeerIds );
socket.broadcast.emit('clientJoined', peerID);
clientpeerIds.push(peerID);
});
}
console.log("--------------------------------------");
console.log("new connection -socket id: " + socket.id);
console.log("clientpeerIds: " + clientpeerIds);
socket.on('setUsername', function(checkusername, scb){
/* scb = socket callback */
var arrlength = clientpeerIds.length;
for (var i = 0; i < arrlength; i++){
if(checkusername === clientpeerIds[i]){
scb(false);
return;
}
}
var signedUsername = cookie.sign(checkusername, 'secret');
scb(true, signedUsername);
removeUser();
socket.set('peerID', checkusername, function(){
socket.broadcast.emit('clientJoined', checkusername);
clientpeerIds.push(checkusername);
});
});
socket.on('disconnect', function(){
removeUser();
});
function removeUser(){
socket.get("peerID", function(err, peerID){
if(err) console.error(err);
socket.broadcast.emit('clientQuit', peerID);
var idx = clientpeerIds.indexOf(peerID);
clientpeerIds.splice(idx, 1);
console.log("--------------------------------------");
console.log('socket ' + socket.id + ' disconnected');
console.log("clientpeerIds: " + clientpeerIds);
});
}
});
var peerS = new PeerServer({port: 8090, path: '/myapp'});
peerS.on('connection', function(id){
console.log("peerId: " + id + " has connected");
});
peerS.on('disconnect', function(id){
console.log("peerId: " + id + " has diconnec
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment