node package manager



I love the CustomEvent model in the DOM. A nice simple (name, detail) pairing. So, this is my take on using that same model on the server. In my mind it fits with end-to-end JavaScript to think about end-to-end events.

Getting Started


npm install --save custom-event-server

Simple Server

server = require('custom-event-server')()
server.on 'beep'(name, detail, client) -> 'boop'{}
server.on 'woot'(name, detail, client) ->
  console.log 'ahhh!'
server.listen 8080

Simple Client

This uses the core-custom-event-client which is a Polymer element.

<core-custom-event-client id="localhost" servers='ws://localhost:8080' onboop='"woot")'>

And of course you can addEventListener, use a jQuery on, or bind a Polymer style on-boop='{{}}'


So the idea is that events coming from the server look and feel like events coming from other DOM elements. And, that instead of RPC/REST/Messages, you fire events on the server.


This is really just a web socket, but it adopts a (name, detail) protocol. About the only thing to keep in mind is to make sure your detail can be JSON serialized.

Built Ins


Fired from the server back to your client on a connection or reconnection. ### ping Fired from the client core-custom-event-client element on a timer. Pretty much any load balancer or proxy you put in front will time out and tear down your web socket without this. ### pong Fired from the server back to the client in response to a ping.