Pushpin

Pushpin is a reverse proxy server that makes it easy to build realtime web services. The project is unique among realtime push solutions in that it is designed to address the needs of API creators.

Protocol Rich

Pushpin supports HTTP streaming, HTTP long-polling, and WebSockets. For compatibility with older browsers, it can also translate from SockJS.

Transparent to Clients

Clients communicate using your API contract. Pushpin is a server-side implementation detail. An existing realtime API can be migrated to or away from Pushpin without breaking clients.

Any Language and Framework

Since Pushpin is a proxy server, the backend can be written in any language. Convenience libraries are available to make integration easy.

API Management

With Pushpin, API management systems can manage realtime endpoints. Authentication, analytics, etc. work as you'd expect.

For more information, check out the Pushpin website.

Zurl

Zurl is a gateway that converts between ZeroMQ messages and outbound HTTP requests or WebSocket connections. It gives you powerful access to these protocols from within a message-oriented architecture. Zurl is particularly useful for implementing Webhooks, because it can perform fire-and-forget HTTP requests and protect against unsafe target URLs.

Features

  • Request HTTP and HTTPS URLs
  • Connect to WS and WSS URLs for WebSockets
  • Completely event-driven, using JDNS and Libcurl
  • Handle thousands of simultaneous outbound connections
  • Two access methods: REQ and PUSH/SUB (think Mongrel2 in reverse!)
  • Streaming requests and responses
  • Packet format can be JSON or TNetStrings
  • Set access policies (e.g. block requests to 10.*)

For more, visit the Zurl Github page.

Tigase ZeroMQ Gateway

Routes XMPP stanzas between Tigase and ZeroMQ sockets.

How It Works

The plugin is configured to bind on two ZeroMQ sockets:

  • PULL socket to consume stanzas that should be sent over XMPP
  • PUSH socket to produce stanzas that were received over XMPP

Message Format

A stanza message is a single part message where the content is a full XMPP stanza (message, presence, iq) in the "jabber:client" namespace.

For more, visit the Tigase ZeroMQ Gateway Github page.

Pollymer

Pollymer is a general-purpose AJAX library that provides conveniences for long-polling applications, such as request retries, exponential backoff between requests, randomized request delaying, and workarounds for browser "busy" indications. It also implements multiple transports to ensure cross-domain access works in all major browsers.

Dependencies

  • json2.js

Available Transports

  • XmlHttpRequest for same-origin requests
  • JSON-P for cross-origin requests

Usage

Install the library and use this code in your app:

var req = new Pollymer.Request();
req.on('finished', function(code, result, headers) { ... });
req.on('error', function(reason) { ... });
var headers = { ... };
var body = 'some data';
req.maxTries = 2; // try twice
req.start('POST', 'http://example.com/path', headers, body);

For more, visit the Pollymer Github page.

WebSockHop

WebSockHop is a convenience library for WebSocket clients that provides automatic reconnect, periodic pinging, and request/response interactions. This is the kind of core functionality that every WebSocket application needs, isolated into a reusable library. The name comes from "sock hop", a type of dance.

For more, visit the WebSockHop Github page.

WebhookInbox

WebhookInbox is a web service and website that receives HTTP requests from external sources and stores the data of those requests for later retrieval. Each inbox is represented by a generated URL, which can be passed to other applications for use.

If you're developing a service that makes HTTP callbacks, WebhookInbox can be used as a convenient way to examine what you're sending. Incoming request data is displayed on the WebhookInbox website in realtime as it happens.

There is also a REST API available, meaning WebhookInbox can be used programmatically, for example by a browser app wishing to receive HTTP callbacks.

There is an instance of WebhookInbox running at http://webhookinbox.com/ for anyone to use.

For more, visit the WebhookInbox Github page.