Saturday 1 January 2011

New Community Edition License for 2011

A new Community Edition License for 2011 has been released. This extends the Community license until 2012. Download below:


Instructions for use

Copy the license.txt to the folder where StreamHub server is started from - StreamHub reads the license file from its current working directory. If you have an existing license.txt in that directory we recommend you back this file up before overwriting it.

Happy 2011 from all the StreamHub Team!!

Saturday 4 December 2010

HTML 5 Web Sockets arrives in StreamHub 2.2.9

Some of you may have noticed HTML 5 Web Sockets sneaking into 2.2.x releases of StreamHub but now it's officially here. 2.2.9 brings full Web Sockets functionality for browsers that support it. Comet will still be supported for older browsers and those that don't yet support the latest HTML 5 standards. Detection of the most reliable connection-type is built-in, with transparent failover to Comet and Ajax Polling. This means you don't need to make any changes to your existing code to start using Web Sockets, StreamHub will automatically detect the best connection-type for you.

Current Web Sockets Support in Browsers

  • Google Chrome
  • Apple Safari 5+
  • Firefox 4 Beta
  • Apple iOS 4.2+ for iPad & iPhone

What else is new in 2.2.9?

2.2.9 has come a long way since the popular stable 2.0.x branch. So, here's a complete set of release notes for those looking to upgrade from 2.0.x.

  • Fixed (2.2.9): Web Socket handshake intermittent issues
  • Fixed (2.2.8): Expensive debug string operation being performed on all log levels
  • Fixed (2.2.7): Firefox 3.x Comet reconnection bug when hitting 300k limit
  • Fixed (2.2.7): MAX_CLIENT_LIMIT was disconnecting most recent WebSocket client
  • (2.2.7): HTTP file handling improvements
  • (2.2.7): Logging improvements
  • (2.2.7): Upgrade to support secure Web Socket handshakes
  • (2.2.4): Performance improvements
  • (2.2.4): HTML5 Web Sockets support
  • (2.2.4): Ability to monitor number of connected clients via JMX
  • Fixed (2.2.4): Possible NPE in Dispatcher
  • (2.1.x-beta): Numerous performance improvements to the HTTP handling.
  • (2.1.x-beta): Transparent failover to polling connections where firewalls/proxies prevent full duplex streaming.
  • Fixed (2.1.x-beta): Ajax adapter was not reconnecting if no serverList was specified.
  • Fixed (2.1.x-beta): 'Stopping polling' log message appeared even when not using a polling connection type.
  • (2.1.x-beta): More control over HTTP headers for pages and comet content.

Important note when upgrading from 2.0.x

If you migrate any existing Ajax SDK apps from 2.0.x to 2.1 or 2.2 you will need to change your connection URLs to incorporate the new streamhub context. For example, if previously you were using:


hub.connect("http://localhost:7979/");


You will now need to use:


hub.connect("http://localhost:7979/streamhub/");


Get the latest version

Find the latest 2.1.12-beta available to download below aswell as links to the most up-to-date documentation and tutorials:

Sunday 25 April 2010

StreamHub 2.1.12 beta Release - Server Integration Is Here

A brand new beta version of the StreamHub Reverse Ajax & Comet Server has been released today. The new 2.1 branch has been under development for months and has finally been released as a beta. The tagline for the 2.1 release is 'Server Integration'. Changes in the way StreamHub works now allow you to integrate Tomcat, Apache, JBoss, IIS or any other HTTP server with StreamHub, without comprimising on the highly-scalable streaming performance.

Using configureable contexts, StreamHub can be configured to transparently serve content from any downstream server. The core StreamHub NIO engine can sit in front of one or more web servers and routes requests to either the internal Comet engine or to the web servers behind.

To use this new feature, you'll need to setup a ForwardingHandler:


PushServer streamingServer = new NIOServer(80);
InetSocketAddress tomcatAddress = new InetSocketAddress(InetAddress.getLocalHost(), 8080);
streamingServer.addContext("/*", new ForwardingHandler(tomcatAddress));
streamingServer.start();


The example above will route any requests for http://myhost.com/ to a Tomcat instance running on port 8080 on the same host but the user will still see http://myhost.com/ in their browser. By default, any requests to the /streamhub/* context will be routed to StreamHub's internal Comet engine. That means, if you migrate any existing Comet apps to 2.1 you will need to change your connection URLs. For example, if previously you were using:


hub.connect("http://localhost:7979/");

From 2.1 onwards you will need to use:


hub.connect("http://localhost:7979/streamhub/");

The default /* context handler will use StreamHub's existing content handler, so you don't need to add a ForwardingHandler by default. The /* context handler will also act as a catch-all handler. Potentially you can have as many handlers as you like, routing different contexts to different physical servers.

What else is new in 2.1?
  • Numerous performance improvements to the HTTP handling.
  • Transparent failover to polling connections where firewalls/proxies prevent full duplex streaming.
  • Fixed: Ajax adapter was not reconnecting if no serverList was specified.
  • Fixed: 'Stopping polling' log message appeared even when not using a polling connection type.
  • More control over HTTP headers for pages and comet content.

Transparent failover to polling

The StreamHub Ajax SDK always attempts to establish the best connection possible with the server. Where a true streaming connection cannot be established, normally because a proxy or firewall is attempting to read the entire connection before forwarding, StreamHub will now failover to a polling connection without interrupting the users experience.


HTTP header control

Two new methods have been introduced to the PushServer interface to give you more control over the HTTP headers that StreamHub sends out. StreamHub will send a different set of headers for synchronous requests (e.g. subscriptions), than those it will send out for asynchronous push requests (e.g. the streaming channel). You now can override or set your own default headers for both of these types of request.

The example below, allows you to control the charset of data added to a JsonPayload:


server.setDefaultPushHeader("Content-Type", "text/html; charset=UTF-8");


Get the latest version

Find the latest 2.1.12-beta available to download below aswell as links to the most up-to-date documentation and tutorials:

More coming soon, as usual, subscribe to this blog or follow us on twitter to keep up to date.