ChuckT node module
ChuckT-node is a node server component for triggering and/or listening to
events over the SockJS websocket
API. This client is intended to be used in conjunction with the client-side
ChuckT JavaScript library:
ChuckT-Redis
Injects publish and subscribe into ChuckT which almost replicates and simplifies the core features of socket.io into sockjs.
Usage:
Installation
The recommended way to install chuckt-node is through npm:
npm install chuckt_redis
Initialization
ChuckT instances require a socket connection:
var sockjs = require('sockjs');
var chuckt = require('chuck_redis');
var connections={};
var publisher = redis.createClient();
var sock = sockjs.createServer();
sock.on('connection', function(conn) {
var socket = new ChuckT(conn,connections,publisher);
By default the clients don't subscribe to namespaces, as not all clients require to be join any namespaces. To initialise pubsub for a client
socket.initPub();
chuck_redis has 4 basic methods
Emit an event to the frontend/browser
socket.emitToBrowser('some-event', 'bar');
Emit an event to all the clients browsers.
socket.emitToAllBrowsers('some-event', 'bar');
Emit an event to all the clients in a channel
socket.emitToChannel('some-event', 'bar');
Emit an event to all the clients in a channel except the broadcaster
socket.emitToPeers('some-event', 'bar');
Change the namespace of the socket
socket.switchChannel('nameOfTheChannel');
Functions such as emitToBrowser
and emitToAllBrowsers
works even if a user if not part of any namespaces.
When any emit function is called you can send any number or arbitrary arguments.
Listen to events fired from the frontend
Any number of arguments and even a callback can be passed with events. The
callback is essentially just a proxy to a callback that is defined (and
executed) on the frontend:
chuckt.on('another-event', function(arg1, arg2, callback) {
callback();
});
Some events may only pass a callback:
chuckt.on('another-event-2', function(callback) {
callback();
});
You may want to pass arguments back to the frontend's callback:
chuckt.on('another-event-3', function(callback) {
callback('dear frontend', 'you may find these arguments compelling');
});
And sometimes, your event may not come with any arguments nor a callback:
chuckt.on('another-event-4', function() {
});
A big thanks to epixa/chuckt-node for making event driven possible in sockjs.