higher-level engine.io client.
io-server is the recommended socket server, but any server that has event
and channel
events would work fine.
$ component install matthewmueller/io
var io = IO('localhost:8080/news');
// Custom events
io.on('news', function(news) {...})
// Raw socket messages
io.socket.on('error', function(err) {...})
// Send a message
io.emit('news', news);
Initialize a new instance of IO
. IO will pass these parameters into engine.io.
IO supports url-based pooling or "rooms". If you connect with a pathname, IO will send the pathname to the server as a querystring. It's the responsibilty of the server to place these connections into rooms. io-server supports this kind of pooling.
IO('localhost:8080/news/today')
// internally: new EngineIO('localhost:8080/?pathname=news/today');
IO('localhost:8080/news/tomorrow') // different pool than `/news/today`
IO('localhost:8080/news') // gets updates from both `/news/today` and `/news/tomorrow`
Why convert pathname to querystring?
Engine.io squelches pathnames but maintains query parameters, so IO converts any pathname to a querystring to that it can be obtained on the server-side.
Listen and respond to an event
.
Access to the raw engine.io socket
. Useful to listen to events such as open
, close
, etc.
Send a message
to all connected clients (including itself) with the given event
.
io.emit('reminder', data);
Split a single socket into multiple channels. In other words, #channel()
creates a fresh socket without another connection.
If no channel
is given, a unique id is used.
var io = IO('http://localhost:8080');
var cheerio = io.channel('cheerio');
var superagent = io.channel('superagent');
cheerio.emit('install');
superagent.emit('install');
cheerio.on('complete', fn);
superagent.on('complete', fn);
You can also split an already split socket:
var script = io.channel('scriptID');
var cheerio = script.channel('cheerio');
console.log(cheerio.$channel) // scriptID:cheerio
Close the connection
make test
Note you'll need serve
- Fix pathname support on node client
MIT