Giter Club home page Giter Club logo

io's Introduction

io

higher-level engine.io client.

io-server is the recommended socket server, but any server that has event and channel events would work fine.

Installation

$ component install matthewmueller/io

Example

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);

API

IO(uri, [options])

Initialize a new instance of IO. IO will pass these parameters into engine.io.

Pooling

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.

io#on(event, fn)

Listen and respond to an event.

io#socket

Access to the raw engine.io socket. Useful to listen to events such as open, close, etc.

io#emit(event, message)

Send a message to all connected clients (including itself) with the given event.

io.emit('reminder', data);

io#channel([channel])

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

io#close()

Close the connection

Tests

make test

Note you'll need serve

TODO

  • Fix pathname support on node client

License

MIT

io's People

Contributors

matthewmueller avatar

Stargazers

Michael Anthony avatar Naoki Shibayama avatar Keith Yao avatar Cristian Douce avatar Luke Vivier avatar Erik Sundahl avatar Matthew Hadley avatar RJ Sheperd avatar Denis L.E. Favreau avatar Wu Dong avatar Jonathan Brumley avatar

Watchers

Erik Sundahl avatar yury avatar James Cloos avatar Michael Anthony avatar  avatar

io's Issues

Server side example

(Not an issue) would be nice if you added the server side code of the readme example.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.