Skip to content

mwawrusch/hook.io

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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.

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

About

a full featured i/o framework for node.js

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%