mirror of
https://github.com/ianramzy/decentralized-video-chat.git
synced 2025-02-23 00:15:04 +08:00
working emit/broadcase to just room
This commit is contained in:
parent
c4fe332552
commit
72e8c0a865
19
index.js
19
index.js
@ -11,25 +11,32 @@ var http = require('http').createServer(app);
|
|||||||
var io = require('socket.io')(http);
|
var io = require('socket.io')(http);
|
||||||
|
|
||||||
app.use(express.static('public'));
|
app.use(express.static('public'));
|
||||||
|
|
||||||
|
function log(msg, room){
|
||||||
|
console.log(room + " - " + msg)
|
||||||
|
|
||||||
|
}
|
||||||
// When a socket connects, set up the specific listeners we will use.
|
// When a socket connects, set up the specific listeners we will use.
|
||||||
io.on('connection', function (socket) {
|
io.on('connection', function (socket) {
|
||||||
// When a client tries to join a room, only allow them if they are first or
|
// When a client tries to join a room, only allow them if they are first or
|
||||||
// second in the room. Otherwise it is full.
|
// second in the room. Otherwise it is full.
|
||||||
socket.on('join', function (room) {
|
socket.on('join', function (room) {
|
||||||
console.log('A client joined room:' + room);
|
log('A client joined the room', room);
|
||||||
var clients = io.sockets.adapter.rooms[room];
|
var clients = io.sockets.adapter.rooms[room];
|
||||||
var numClients = typeof clients !== 'undefined' ? clients.length : 0;
|
var numClients = typeof clients !== 'undefined' ? clients.length : 0;
|
||||||
if (numClients === 0) {
|
if (numClients === 0) {
|
||||||
socket.join(room);
|
socket.join(room);
|
||||||
|
// socket.emit("roomtest", room).to(room)
|
||||||
} else if (numClients === 1) {
|
} else if (numClients === 1) {
|
||||||
socket.join(room);
|
socket.join(room);
|
||||||
|
// socket.emit("roomtest", room).to(room)
|
||||||
// When the client is second to join the room, both clients are ready.
|
// When the client is second to join the room, both clients are ready.
|
||||||
console.log('Broadcasting ready message')
|
log('Broadcasting ready message', room);
|
||||||
socket.broadcast.emit('willInitiateCall', room);
|
socket.broadcast.to(room).emit('willInitiateCall', room);
|
||||||
socket.emit('ready', room);
|
socket.emit('ready', room).to(room);
|
||||||
socket.broadcast.emit('ready', room);
|
socket.broadcast.to(room).emit('ready', room);
|
||||||
} else {
|
} else {
|
||||||
console.log("room full");
|
log("room already full", room);
|
||||||
socket.emit('full', room);
|
socket.emit('full', room);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -4,8 +4,7 @@ if (!location.hash) {
|
|||||||
var nouns = ["dog", "bat", "wrench", "apple", "pear", "ghost", "cat", "wolf", "squid", "goat", "snail", "hat", "sock", "plum", "bear", "snake", "turtle", "horse","spoon","fork","spider","tree","chair","table"]
|
var nouns = ["dog", "bat", "wrench", "apple", "pear", "ghost", "cat", "wolf", "squid", "goat", "snail", "hat", "sock", "plum", "bear", "snake", "turtle", "horse","spoon","fork","spider","tree","chair","table"]
|
||||||
var adjective = adjectives[Math.floor(Math.random() * adjectives.length)]
|
var adjective = adjectives[Math.floor(Math.random() * adjectives.length)]
|
||||||
var noun = nouns[Math.floor(Math.random() * nouns.length)]
|
var noun = nouns[Math.floor(Math.random() * nouns.length)]
|
||||||
// var num = Math.floor(Math.ran1dom() * 100)
|
location.hash = adjective + noun
|
||||||
location.hash = adjective + "-" + noun
|
|
||||||
}
|
}
|
||||||
const roomHash = location.hash.substring(1);
|
const roomHash = location.hash.substring(1);
|
||||||
|
|
||||||
@ -72,7 +71,9 @@ var VideoChat = {
|
|||||||
VideoChat.localVideo.srcObject = stream;
|
VideoChat.localVideo.srcObject = stream;
|
||||||
// Now we're ready to join the chat room.
|
// Now we're ready to join the chat room.
|
||||||
VideoChat.socket.emit('join', roomHash);
|
VideoChat.socket.emit('join', roomHash);
|
||||||
// VideoChat.socket.emit('join', 'test'); default
|
// VideoChat.socket.on('roomtest', (passedRoom) => alert("youre in room: " + passedRoom));
|
||||||
|
VideoChat.socket.on('temp', () => alert("temp called"));
|
||||||
|
VideoChat.socket.on('full', VideoChat.chatRoomFull);
|
||||||
VideoChat.socket.on('offer', VideoChat.onOffer);
|
VideoChat.socket.on('offer', VideoChat.onOffer);
|
||||||
VideoChat.socket.on('ready', VideoChat.readyToCall);
|
VideoChat.socket.on('ready', VideoChat.readyToCall);
|
||||||
VideoChat.socket.on('willInitiateCall', () => VideoChat.willInitiateCall = true);
|
VideoChat.socket.on('willInitiateCall', () => VideoChat.willInitiateCall = true);
|
||||||
@ -83,6 +84,12 @@ var VideoChat = {
|
|||||||
logIt('No media stream for us.');
|
logIt('No media stream for us.');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
chatRoomFull: function(){
|
||||||
|
alert("Chat room is full. Check to make sure you don't have multiple open tabs");
|
||||||
|
// VideoChat.socket.disconnect()
|
||||||
|
// todo handle this better
|
||||||
|
},
|
||||||
|
|
||||||
// When we are ready to call, enable the Call button.
|
// When we are ready to call, enable the Call button.
|
||||||
readyToCall: function (event) {
|
readyToCall: function (event) {
|
||||||
console.log("readyToCall");
|
console.log("readyToCall");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user