pushpin - Reverse proxy for realtime web services

  •        10

Pushpin is a reverse proxy server written in C++ that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services. The project is unique among realtime push solutions in that it is designed to address the needs of API creators. Pushpin is transparent to clients and integrates easily into an API stack. To assist with integration, there are libraries for many backend languages and frameworks. Pushpin has no libraries on the client side because it is transparent to clients.

http://pushpin.org/
https://github.com/fanout/pushpin

Tags
Implementation
License
Platform

   




Related Projects

Atmosphere - Realtime Client Server Framework for the JVM

  •    Java

The Atmosphere Framework contains client and server side components for building Asynchronous Web Applications. It transparently supports WebSockets, Server Sent Events (SSE), Long-Polling, HTTP Streaming (Forever frame) and JSONP. Its mission is to make real time apps possible in every browser, library and mobile device, blurring the differences between the different transport mechanisms.

primus - :zap: Primus, the creator god of the transformers & an abstraction layer for real-time to prevent module lock-in

  •    Javascript

Primus, the creator god of transformers but now also known as universal wrapper for real-time frameworks. There are a lot of real-time frameworks available for Node.js and they all have different opinions on how real-time should be done. Primus provides a common low level interface to communicate in real-time using various real-time frameworks.If you deploy your application behind a reverse proxy (Nginx, HAProxy, etc.) you might need to add WebSocket specific settings to its configuration files. If you intend to use WebSockets, please ensure that these settings have been added. There are some example configuration files available in the observing/balancerbattle repository.

nchan - Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE), powered by Nginx

  •    C

Nchan is a scalable, flexible pub/sub server for the modern web, built as a module for the Nginx web server. It can be configured as a standalone server, or as a shim between your application and hundreds, thousands, or millions of live subscribers. It can buffer messages in memory, on-disk, or via Redis. All connections are handled asynchronously and distributed among any number of worker processes. It can also scale to many Nginx servers with Redis. Messages are published to channels with HTTP POST requests or Websocket, and subscribed also through Websocket, long-polling, EventSource (SSE), old-fashioned interval polling, and more.

echo

  •    TypeScript

In many modern web applications, WebSockets are used to implement realtime, live-updating user interfaces. When some data is updated on the server, a message is typically sent over a WebSocket connection to be handled by the client. This provides a more robust, efficient alternative to continually polling your application for changes. To assist you in building these types of applications, Laravel makes it easy to "broadcast" your events over a WebSocket connection. Broadcasting your Laravel events allows you to share the same event names between your server-side code and your client-side JavaScript application.

zerogw - A fast HTTP/WebSocket to zeromq gateway (UNMAINTAINED, take a look at swindon web server instead)

  •    C

Zerogw is a http to zeromq gateway. Which means it listens HTTP, parses request and sends it using zeromq socket (ZMQ_REQ). Then waits for the reply and responds with data received from zeromq socket. Starting with v0.3 zerogw also supports WebSockets. Websockets are implemented by forwarding incoming messages using ZMQ_PUB socket, and listening commands from ZMQ_SUB socket. Each WebSocket client can be subscribed to unlimited number of topics. Each zeromq message it either control message (e.g. subscription) or message to a specified topic which will be efficiently sent to every WebSocket subscribed to that particular topic.


bullet - Simple, reliable, efficient streaming for Cowboy.

  •    Erlang

Bullet is a Cowboy handler and associated Javascript library for maintaining a persistent connection between a client and a server. Bullet abstracts a general transport protocol similar to WebSockets. Bullet will use a WebSocket if possible but will fallback to other transports when necessary. If the client supports EventSource connections then Bullet will use EventSource to send messages from the server to the client and XHR for messages from the client to the server. If EventSource is not available then Bullet will use XHR for both directions, using long-polling for server-to-client messages.

faye-websocket-ruby - Standards-compliant WebSocket client and server

  •    Ruby

This is a general-purpose WebSocket implementation extracted from the Faye project. It provides classes for easily building WebSocket servers and clients in Ruby. It does not provide a server itself, but rather makes it easy to handle WebSocket connections within an existing Rack application. It does not provide any abstraction other than the standard WebSocket API. It also provides an abstraction for handling EventSource connections, which are one-way connections that allow the server to push data to the client. They are based on streaming HTTP responses and can be easier to access via proxies than WebSockets.

faye-websocket-node - Standards-compliant WebSocket client and server

  •    Javascript

This is a general-purpose WebSocket implementation extracted from the Faye project. It provides classes for easily building WebSocket servers and clients in Node. It does not provide a server itself, but rather makes it easy to handle WebSocket connections within an existing Node application. It does not provide any abstraction other than the standard WebSocket API. It also provides an abstraction for handling EventSource connections, which are one-way connections that allow the server to push data to the client. They are based on streaming HTTP responses and can be easier to access via proxies than WebSockets.

incus - incus is a middleware for distributing messages via websockets, long polling, and push notifications

  •    Go

The incus.js front-end npm browserified module is provided for consuming WebSocket events in the Browser or server-side. Self-contained, minified downloads are also available. UID is a unique identifier for the user. It can be anywhere from an auto incremented ID to something more private such as a session id or OAuth token. If messages to users should be private from other users, then you should consider the UID a shared secret between the user and the server.

StreamMachine - An experiment in next-generation streaming audio infrastructure for radio stations.

  •    CoffeeScript

StreamMachine is an open-source streaming audio server aimed at pushing innovation for radio stations that have spent too many years running old technology like Shoutcast and Icecast. The project has two goals: emulating the traditional streaming experience and building support for new features that push the radio listening experience forward. Currently StreamMachine supports traditional Shoutcast-style streaming and HTTP Live Streaming.

Akka HTTP - The Streaming-first HTTP server/module of Akka

  •    Scala

The Akka HTTP modules implement a full server- and client-side HTTP stack on top of akka-actor and akka-stream. It's not a web-framework but rather a more general toolkit for providing and consuming HTTP-based services. While interaction with a browser is of course also in scope it is not the primary focus of Akka HTTP.

Hosebird client - A Java HTTP client for consuming Twitter's Streaming API

  •    Java

A Java HTTP client for consuming Twitter's Streaming API. It has GZip support, OAuth support, Partitioning support, Automatic reconnections with appropriate backfill counts, Access to raw bytes payload, Proper backoffs/retry schemes, Relevant statistics/events, Control stream support for sitestreams.

loadbalancer - A sticky load balancer optimized for realtime apps

  •    Javascript

LoadBalancer.js is a sticky-session TCP load balancer which is optimized to work with realtime frameworks (with support for HTTP long polling fallbacks). It captures raw TCP connections from a specified port and forwards them to various targets (defined as host and port combinations). It chooses the appropriate target based on a hash of the client's IP address.LoadBalancer.js was originally designed to work with SocketCluster (http://socketcluster.io) but it can work equally well with any other realtime framework.

php-long-polling - An extremely simple example of a "real-time" self-updating page using long-polling

  •    PHP

A very simple demonstration of long-polling with AJAX (jQuery) and PHP. Long-polling makes near "real-time" applications possible. The client does not request new data every X seconds/minutes, the client gets new data delivered when there is new data (push-notification style). This is an improved, cleaned and documented fork of https://github.com/lincolnbrito/php-ajax-long-polling ! Big thanks, man. Send a request to the server, get an instant answer. Do this every x seconds, minutes etc. to keep your application up-to-date. But: This costs a lot of requests.

Awstats - Advanced web, streaming, ftp and mail server statistics

  •    CGI

AWStats is a powerful tool that generates advanced web, streaming, ftp or mail server statistics graphically. It can analyze log files from all major server tools like Apache log files, WebStar, IIS and a lot of other web, proxy, wap, streaming servers, mail servers and some ftp servers. This log analyzer works as a CGI or from command line and shows you all possible information your log contains, in few graphical web pages.

go-oryx - The go-oryx is SRS++, focus on real-time live streaming cluster.

  •    Go

Oryx is next generation media streaming server, extract service to processes which communicates over http with each other, to get more flexible, low latency, programmable and high maintainable server. Oryx will implement most of features of srs, which is industrial-strength live streaming cluster, for the best conceptual integrity and the simplest implementation. In another words, oryx is next-generation srs, the srs-ng.

socket.io - Realtime application framework (Node.JS server)

  •    Javascript

For this purpose, it relies on Engine.IO, which first establishes a long-polling connection, then tries to upgrade to better transports that are "tested" on the side, like WebSocket. Please see the Goals section for more information. Unless instructed otherwise a disconnected client will try to reconnect forever, until the server is available again. Please see the available reconnection options here.

restbed - Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++11 applications

  •    C++

Restbed is a comprehensive and consistent programming model for building applications that require seamless and secure communication over HTTP, with the ability to model a range of business processes, designed to target mobile, tablet, desktop and embedded production environments. More in-depth examples can be found here. To see Restbed used in anger, please visit Corvusoft's RestQ project.

Resgate - A Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.

  •    Go

Resgate is a Go project implementing a realtime API gateway for the RES protocol with NATS server as messaging system. It is a simple server that lets you create REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.





We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.