__ __ ______ ______ __ ___ __ ______
| | | | / __ \ / __ \ | |/ / | | / __ \
| |__| | | | | | | | | | | ' / | | | | | |
| __ | | | | | | | | | | < | | | | | |
| | | | | `--' | | `--' | | . \ __ | | | `--' |
|__| |__| \______/ \______/ |__|\__\ (__) |__| \______/
a full featured i/o framework for node.js
v0.7.7
hook.io creates a distributed node.js EventEmitter that works cross-process / cross-platform / cross-browser. Think of it like a real-time event bus that works anywhere JavaScript is supported.
You create custom i/o scenarios by picking and choosing from an extensive library of tiny, independent, autonomous "hooks" that seamlessly work together.
http://groups.google.com/group/hookio
Email List:http://youtube.com/maraksquires and http://github.com/hookio/tutorials
20 Video lessons available at:Features :
- Build large, decoupled, distributed, and fault tolerant I/O heavy applications in node.js
- Create hooks on ANY device that supports JavaScript (cross-browser support via socket.io)
- Throw any block of sync or async code on a new process with a callback
- Easily scale any tcp based messaging infrastructure (such as clustering socket.io chat rooms in memory)
- Interprocess Message Publishing and Subscribing done through EventEmitter2 and dnode
- Messaging API inherits and mimics Node's native EventEmitter API (with the help of EventEmitter2)
- Spawning and Daemonizing of processes handled with Forever
- Easily connect / disconnect hooks "hot" without affecting other services
- Core library currently checking in at about ~450 lines of code
Available Hooks (more coming soon)
- cron: Adds and removes jobs that emit hook.io events on a schedule
- couch: Emit hook.io events based on your CouchDB _changes feed
- irc: Full IRC bindings
- helloworld
- logger: Multi-transport Logger (Console, File, Redis, Mongo, Loggly)
- mailer: Sends emails
- sitemonitor: A low level Hook for monitoring web-sites.
- request: Simple wrapper for http://github.com/mikeal/request
- repl: Rainbow Powered REPL
- twilio: Make calls and send SMS through Twilio
- twitter: Wrapper to Twitter API
- webhook: Emits received HTTP requests as hook.io events (with optional JSON-RPC 1.0 Support)
- wget: Downloads files using HTTP. Based on the http-get module by Stefan Rusu
Getting Start / Demo
npm install hook.io-helloworld -g
Now run:
hookio-helloworld
Spawn up as many as you want. The first one becomes a server, the rest will become clients. Each helloworld hook emits a hello on an interval. Now watch the i/o party go!
Blog Posts
hook.io for dummies: http://ejeklint.github.com/2011/09/23/hook.io-for-dummies-part-1-overview/ Distribute Node.js Apps with hook.io: http://blog.nodejitsu.com/distribute-nodejs-apps-with-hookio
Tests
All tests are written with [vows][7] and require that you link hook.io to itself:
$ cd /path/to/hook.io
$ [sudo] npm link
$ [sudo] npm link hook.io
$ npm test
Core Hook.io Team
Marak Squires, Charlie Robbins, Jameson Lee
Contributors (through code and advice)
Substack, h1jinx, AvianFlu, Chapel, Dominic Tarr, Tim Smart, tmpvar, kadir pekel, perezd, mklabs, temsa