Introduction

The SSE Proxy is a lightweight web proxy that acts as a kind of "concentrator" for SSE connections. It has only one function, which is to provide large numbers SSE connections to clients on behalf of other back-end web servers. It can provide up to 28,000 simultaneous client connections and requires only one connection to each back-end server it supports. In this way, it enables the back-end servers to provide SSE connections to larger numbers of clients than would otherwise be possible. For very large client networks, it is possible to run many SSE Proxies in parallel. It is even possible to set up a hierarchy of SSE Proxies, effectively removing any limitation on the total number of SSE connections that it is possible to handle.

The SSE Proxy's purpose in the context of CUE/Newsgate systems is to provide improved scalability to:

  • SSE endpoints running on CUE Content Store instances (that is, Escenic change logs and Live Center feeds)

  • SSE endpoints running on Newsgate servers

Server-sent events (SSE) enable these back-end systems to offer real-time updates to HTTP clients without the need for polling, thereby ensuring much better scalability. However, this improvement is won at the cost of requiring the back end to hold large numbers of persistent SSE connections open. This can quickly becomes a problem. In the case of the Content Store, for example, Tomcat (the web application server in which the Content Store is usually run) does not support more than 200 simultaneous client connections. The SSE Proxy provides a means of overcoming such limitations.

SSE proxies can be run anywhere – they do not have to be located on the same host or even in the same domain as the back-end server for which they provide connections.

The SSE Proxy is based on a Java framework for building web services called Dropwizard. This manual provides basic guidance on how to set up the SSE Proxy for use with CUE back-ends. If you have requirements that are not covered here, and want to configure it in some special way, then you may find the information you are looking for in the Dropwizard documentation.