Skip to content

livep2000/sockjsio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Warning: Version 0.0.1 is in the absolute alpha fase and created by a Node beginner. I must be doing some things wrong, please feel free to correct me with feedback.

Sockjsio is a multiroom manager based on the sockjs client (https://github.com/sockjs/sockjs-client) and sockjs-node (https://github.com/sockjs/sockjs-node) server.

Dependecies are aync and sockjs. Install if not allready done

npm install sockjs
npm install async

Defining a server is plane and simple:

var sockjsio = require('./sockjsio');

sockjsio.listen( port[int], url[string], prefix[string], sendRoomNames[bool] );

If 'SendRoomNames' is true, every response to a room hase a property roomName, corresponding that roomname. Just pick a prefix like '/A', channels are not used since we use rooms.

A simple echo example:

var sockjsio = require('./sockjsio');
sockjsio.listen( 8080 , '0.0.0.0', "/A", true );

sockjsio.on('connection', function( connection )
{
connection.on('roomopen', function( roomName )
	{
	console.log(connection.id + " opened room " + roomName );
	});

    connection.join("room1");
    connection.join("room2");
    connection.leave("room2");

    connection.on('data', function( response )
        {
        	var data = JSON.parse( response );
  
        	// possible ways to send a message
        	connection.emitRoom( data.roomName, data.message )	// Send to whole room including connection
        	connection.broadcastRoom( data.roomName, data.message );// Send to all in this room but connection
        	connection.sendRoom( data.roomName, data.message )	// Send to this connection if in this room

        	connection.emitClient( data.message );			// Send to all clients on the server
        	connection.broadcastClient( data.message );		// Send to all except connection
        	connection.sendClient( data.message );			// Send to this connection
        	});

    var isInroom = connection.isInRoom('room1');		// = true if in 'room1'	
    var joined = connection.joined()				// Array with roomnames
    });

Within the connections there are some handy events they all return the roomName.

connection.on('roomopen', function( roomName )
    {
    console.log(connection.id + " opened room " + roomName );
    });
  • roomopen: fired when room hase opened.
  • roomclose : fired after a room hase closed.
  • leaving: fired when a client left a room.
  • joining: fired when a client hase joined a room.

There are two other functions within connections:

var isInroom = connection.isInRoom('room1'); 		    	// Bool true / false	
var joined = connection.joined()					// Array with roomnames the client joined

To make it complete:

var roomExists = sockjsio.roomExists("room2");		    	// False: last user hase left the room
var usersInRoom = sockjsio.usersInRoom("room1");	    		// Array with connection id's of joined sockets
var clients = sockjsio.clients();				        // Array with all connection id's on the server
var client = sockjsio.client(socketID);				// Get a socket with that ID

About

Sockjs based multiroom manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published