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.

Saturday 30 January 2010

StreamHub Reverse Ajax Server 2.0.14 Released

A new version of the StreamHub Reverse Ajax & Comet Server has been released today. This version contains a critical fix for those running StreamHub server on Linux. A bug has been fixed where certain conditions can cause the CPU usage to be unusually high. The problem was caused by an interaction with the underlying syscalls in Linux and has now been fixed. The bug should not effect Windows users. Linux users are recommended to upgrade as soon as possible to version 2.0.14 or later. A full list of the changes in this release can be found below:
  • Fixed - CPU thrashing on Linux.
  • Fixed - Minor bug when a single client is subscribed, a wayward unsubscribe by another client could remove them.
  • Release version now printed to StreamHub Server log files.
  • New experimental option in the Ajax SDK to use a polling connection type instead of streaming.
Get the latest version

Find the latest version 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.

Friday 1 January 2010

Community Edition Licenses Extended

If you are getting this message when running the Community Edition:

StreamHub not started: License has expired

Then you may be using an old Community Edition License. To fix this problem, download the latest version (2.0.12 or greater), available from the StreamHub download page. If you do not wish to upgrade from the version you are currently using, just copy the license.txt file from the new version and overwrite your existing license.txt. Because of changes to the licensing behaviour, this may not work with versions prior to 2.0.6. In this case, we suggest you upgrade to the latest version. Please use our StreamHub Comet Forum if you experience any problems upgrading.