Skip to content

Instantly share code, notes, and snippets.

@mikermcneil
Created September 17, 2013 18:32
Show Gist options
  • Save mikermcneil/6598661 to your computer and use it in GitHub Desktop.
Save mikermcneil/6598661 to your computer and use it in GitHub Desktop.
Using raw socket.io functionality in a Sails.js controller
module.exports = {
/**
*
* Using raw socket.io functionality from a Sails.js controller
*
*/
index: function (req,res) {
var socket = req.socket;
var io = sails.io;
// emit to all sockets (aka publish)
// including yourself
io.sockets.emit('messageName', {thisIs: 'theMessage'});
// broadcast to a room (aka publish)
// excluding yourself, if you're in it
socket.broadcast.to('roomName').emit('messageName', {thisIs: 'theMessage'});
// emit to a room (aka publish)
// including yourself
io.sockets.in('roomName').emit('messageName', {thisIs: 'theMessage'});
// Join a room (aka subscribe)
// If you're in the room already, no problem, do nothing
// If the room doesn't exist yet, it gets created
socket.join('roomName');
// Leave a room (aka unsubscribe)
// If you're not in the room, no problem, do nothing
// If the room doesn't exist yet, no problem, do nothing
socket.leave('roomName');
// Get all connected sockets in the app
sails.io.sockets.clients();
// Get all conneted sockets in the room, "roomName"
sails.io.sockets.clients('roomName');
}
};
@jonathanwork
Copy link

how would anyone implement this in routes ?
'GET /is/it/micky': {action: 'validate-micky', isSocket: true} < in routes.js ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment