socketio-server

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

Usage no npm install needed!

<script type="module">
  import socketioServer from 'https://cdn.skypack.dev/socketio-server';
</script>

README

socketio-server

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

Please Note

This package was built upon the great 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 of your 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);
    });
});

And inside the Node server, the socket of the registered identifier can be retrieved at any time using the

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