I'm having trouble setting up signaling for namespaced socket.io rooms in node.js.
It seems that certain methods are not available outside of the 'root' namespace.
app.js:
// I'll skip the server setup
var io = require('socket.io').listen(server);
var foo = require("./foo")(io.of('/foo'));
io.of('/foo').on('connection', function (socket) {
try { foo.listen(socket); } catch(err) { console.log(err); }
});
foo.js:
module.exports = function(io){
var signal = function(data){
io.sockets.in('12345').emit('bar', data);
};
var listen = function(socket){
socket.join('12345'); // no problem
signal('test'); // woops!
};
return {listen: listen};
};
The problem occurs at io.sockets.in('12345')
. The namespaced io has no in
method:
TypeError: Object #<Object> has no method 'in'
Is there any way to broadcast to a namespaced room without using socket.broadcast
?