Skip to content

A tool to easily create and use SocketIO-Rooms inside nodejs-express-routes.

Notifications You must be signed in to change notification settings

raphaelbs/socketio-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

socketio-server

A tool to easily create and use SocketIO rooms inside nodejs routes.

Please Note

This package was built upon socket.io. Know the api especially the socket section to get the best out of it.

Installation

use your http server as parameter

var http = require('http');
require('socketio-server')(http, {debug: true});

or your server instance of express

var http = require('http');
var server = http.createServer(app);
require('socketio-server')(server, {debug: true});

Usage

In the client application, the first step is to emit an event named register with an identifier that you keep track. In the example bellow I've used my username as the identifier:

// this can be found laying in some Angular directive frontend application

// an socket for the room 'chat'
let socket = io.connect('http://localhost:3000/chat');
socket.on('connect', function(socket){
    // here's the 'register' call
    socket.emit('register', 'raphaelbs');

    // ... any other event assign
    socket.on('foo', function(bar){
        console.log(bar);
    });
});

Inside the NodeJS server, the registered socket can be retrieved at any time using the identifier

var express = require('express');
var router = express.Router();
var socket = require('socketio-server');
var chatRoom = socket('chat');

router.get('/', function(req, res) {
    // using the common identifier we can retrieve the correcty socket inside the router
	chatRoom('raphaelbs', function(err, socket){
		if(err) return console.error(err);
		// this socket instance is an socket.io socket
		var bar = 10;
		// only the event 'foo' of 'raphaelbs' will receive this 'bar'
		socket.emit('foo', bar);
	});
});

module.exports = router;

Reference

require('socketio-server')(params[, options])

return function(id, callback)

The main entry point of this module.

Constructor argument: params

type string or object

If you need to initialize the module, you should supply the server as argument:

var http = require('http');
var server = http.createServer(app);
require('socketio-server')(server, {debug: true});

If you are in the use stage, the params argument could serve as Room identifier:

var socket = require('socketio-server');
var chatRoom = socket('chat'); //creates (if not created) and exposes a room named 'chat'
var mainRoom = socket(); //creates (if not created) and exposes the default '/' room

Constructor argument: options

type object

key description type default
debug Enable verbosity for debuggin (very handy) boolean false

require('socketio-server')('room name')(id, callback)

This function is the goal of the module. Within this function, you can specifically get the socket of the desired ID defined in your client-side.

id

type string

The identifier of the socket that you want to retrieve.

callback

type function(err, socket)

This callback function exposes a socket object relative to the identifier above.

Dependencies

socket.io

Contact-me

License

MIT

About

A tool to easily create and use SocketIO-Rooms inside nodejs-express-routes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published