Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

socket.io join/leave

Tags:

I'm on the socket.io wiki looking into using rooms but join and leave are not working, i'm wondering if they may have changed up a few things but not had the chance to update the wiki?

socket.join("room-"+data.meid); socket.leave("room-"+meid); 

cause im getting console errors:

Uncaught TypeError: Object #<SocketNamespace> has no method 'leave'  Uncaught TypeError: Object #<SocketNamespace> has no method 'join'  
like image 391
Ben Muircroft Avatar asked Apr 09 '13 18:04

Ben Muircroft


2 Answers

It looks like you had the socket.join on the client side. Its a server side function.

Put this on the server:

io.sockets.on('connection', function (socket) {      socket.on('subscribe', function(data) { socket.join(data.room); })      socket.on('unsubscribe', function(data) { socket.leave(data.room); })  });  setInterval(function(){     io.sockets.in('global').emit('roomChanged', { chicken: 'tasty' }); }, 1000); 

And this on the client:

var socket = io.connect();  socket.emit("subscribe", { room: "global" });  socket.on("roomChanged", function(data) {     console.log("roomChanged", data); }); 
like image 168
Garrows Avatar answered Oct 06 '22 05:10

Garrows


You're probably not declaring 'socket' correctly either that of you haven't installed Socket-io correctly. Try the following...

var io = require("socket.io");  var socket = io.listen(80);  socket.join('room');  socket.leave('room'); 

There's a useful executable example here.

like image 25
Aidanc Avatar answered Oct 06 '22 05:10

Aidanc