/hook.io

a full featured i/o framework for node.js

Primary LanguageJavaScript

 __    __    ______     ______    __  ___         __    ______   
|  |  |  |  /  __  \   /  __  \  |  |/  /        |  |  /  __  \  
|  |__|  | |  |  |  | |  |  |  | |  '  /         |  | |  |  |  | 
|   __   | |  |  |  | |  |  |  | |    <          |  | |  |  |  | 
|  |  |  | |  `--'  | |  `--'  | |  .  \    __   |  | |  `--'  | 
|__|  |__|  \______/   \______/  |__|\__\  (__)  |__|  \______/  

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.

Email List: http://groups.google.com/group/hookio

20 Video lessons available at: http://youtube.com/maraksquires and http://github.com/hookio/tutorials

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