<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Platformability &#187; Real-time web</title>
	<atom:link href="http://blog.caplin.com/tag/real-time-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caplin.com</link>
	<description>Single Dealer Platforms, Industry Expertise</description>
	<lastBuildDate>Fri, 03 Feb 2012 15:38:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Real-time Web on LinkedIn</title>
		<link>http://blog.caplin.com/2011/05/19/real-time-web-on-linkedin/</link>
		<comments>http://blog.caplin.com/2011/05/19/real-time-web-on-linkedin/#comments</comments>
		<pubDate>Thu, 19 May 2011 16:29:27 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[Comet]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=6405</guid>
		<description><![CDATA[There&#8217;s some interesting discussion on the Real-time web Software and Technologies group between Phil Leggetter (ex-Caplin, now Pusher), Frank Greco (Kaazing), Alessandro Alinone (Lightstreamer) and myself. It covers some of the long running issues with terminology in the area of Comet and WebSocket etc.]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s some <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2xua2QuaW4vcGdmRG4y">interesting discussion</a> on the <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5saW5rZWRpbi5jb20vZ3JvdXBzL1JlYWxUaW1lLVdlYi1Tb2Z0d2FyZS1UZWNobm9sb2dpZXMtMjU3ODgxOA==">Real-time web Software and Technologies group</a> between Phil Leggetter (ex-Caplin, now Pusher), Frank Greco (Kaazing), Alessandro Alinone (Lightstreamer) and myself. It covers some of the long running issues with terminology in the area of Comet and WebSocket etc.</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=6405" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2011/05/19/real-time-web-on-linkedin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PubSubHubbub vs client push technologies: What&#8217;s the difference?</title>
		<link>http://blog.caplin.com/2011/01/13/pubsubhubbub-vs-client-push-technologies-whats-the-difference/</link>
		<comments>http://blog.caplin.com/2011/01/13/pubsubhubbub-vs-client-push-technologies-whats-the-difference/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 09:30:45 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[pubsubhubbub]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=4843</guid>
		<description><![CDATA[I have talked about PubSubHubbub &#8211; the not quite real time web previously, but I am still seeing misleading information about PubSubHubbub being posted on the Internet. This post isn&#8217;t intended to promote using Comet servers, but to highlight the difference between PubSubHubbub and client push technologies such as Comet...]]></description>
			<content:encoded><![CDATA[<p>I have talked about <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzAzLzA4L3B1YnN1Ymh1YmJ1Yi10aGUtbm90LXF1aXRlLXJlYWwtdGltZS13ZWIv" 0="target="_blank"">PubSubHubbub &#8211; the not quite real time web</a> previously, but I am still seeing misleading information about <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B1YnN1Ymh1YmJ1Yi8=" 0="target="_blank"">PubSubHubbub</a> being posted on the Internet.</p>
<p>This post isn&#8217;t intended to promote using Comet servers, but to  highlight the difference between PubSubHubbub and client push  technologies such as Comet (which in my view includes HTML5 WebSocket). It is important to understand the difference and why the technology and  protocols to implement the two areas are not suitable for the other. I  have seen people consider PubSubHubbub for client delivery, and also  using full streaming techniques for server to server delivery, but in  both cases it is not as suitable.</p>
<p>PubSubHubbub is a server to server protocol, and this is the key point. It increases the speed at which servers such as Google&#8217;s servers for Google Reader receive updates to blogs and other RSS feeds. However, PubSubHubbub does not change the last hop, which is how client applications or browsers receive these updates to blogs.</p>
<p><span id="more-4843"></span></p>
<p>Of course, if the server gets the update quicker, the client will too, but PubSubHubbub is only responsible for getting the update to the server.</p>
<p>There are <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21ldF8lMjhwcm9ncmFtbWluZyUyOQ==" 0="target="_blank"">lots of techniques</a> for clients to receive real time updates, and it is becoming reasonably common for websites to have elements of live data. Often this is polling behind the interface, so although the user does not have to take any action, and the whole page does not reload, there is still a delay in the screen updating &#8211; the user is just not as aware of it.</p>
<p>The following diagram shows the sequence of events for PubSubHubbub. The green events happen once when an aggregating server, such as Google Reader&#8217;s servers, subscribe to a blog. The red events happen each time the blog is updated. The blue events are not part of PubSubHubbub, but show a typical polling client to complete the picture.</p>
<p><!--more--></p>
<p><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS93cC1jb250ZW50L3VwbG9hZHMvUHViU3ViSHViYnViLnBuZw=="><img class="alignnone size-full wp-image-4867" title="PubSubHubbub sequence diagram" src="http://blog.caplin.com/wp-content/uploads/PubSubHubbub.png" alt="" width="600" height="476" /></a></p>
<p>One of the key aspects of PubSubHubbub is that the Aggregator Server does not stay connected to the Hub. The subscription process is a single HTTP request but the Hub only has to remember a list of subscribers &#8211; not maintain open connections to them. When a new item is published on the blog, the blog server simply pokes the Hub to tell it the feed has changed, and the Hub then does the hard work of figuring out what is new and sending the new items to all the subscribers.</p>
<p>Informing the subscribers is a simple HTTP request, as are all the events in this workflow. There are no persistent connections other than HTTP Keep Alive efficiencies at a lower level.</p>
<p><strong>PubSubHubbub for client delivery?</strong></p>
<p>Delivery to clients is a very different use case.  There could be many more clients, most of which will not be running at any one time. With a persistent streaming connection the server knows when a client is connected and only has to send updates to currently connected clients. With PubSubHubbub a subscription is just a list of URLs to inform &#8211; if the list contains a large number of clients that are no longer running then it is a large overhead to attempt to send out all the HTTP messages.</p>
<p>Another reason for PubSubHubbub not being suitable for client delivery is because clients are often not publically addressable. In other words the Hub cannot send an HTTP request to a client even if it did implement a web server interface. For this reason all real time client delivery techniques use either client polling or maintain an open connection initiated by the client.</p>
<p><strong>HTTP Streaming for server to server?</strong></p>
<p>Conversely, client delivery techniques are not as suitable for server to server communication here. If polling is used, we simply go back to how things were done before PubSubHubbub with all the problems associated with that &#8211; poll too often and you have large overheads. Poll too infrequently and you only get updates infrequently.</p>
<p>However, a full streaming connection would be ok right? Well not really, as blog updates and other RSS feeds are not millisecond critical, and scalability and stability are probably more important. A Hub having to maintain persistent connections to all server subscribers would add complexity and increase resource usage. Clients may have to use a persistent connection, but you can communicate with a server using a simple HTTP request.</p>
<p>There are some use cases where low latency is essential, and in these cases a streaming connection is more suitable. In these situations the number of clients is usually controlled more closely than a typical PubSubHubbub network of public blogs.</p>
<p><strong>Conclusion</strong></p>
<p>PubSubHubbub may not address the final hop to the client, and as a protocol is not suitable for that hop, but it works well for what it is designed for. The server to client hop is covered by Comet or other streaming solutions and together with PubSubHubbub provide end to end real time publication of RSS feeds.</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=4843" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2011/01/13/pubsubhubbub-vs-client-push-technologies-whats-the-difference/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iPhone and iPad WebSocket support</title>
		<link>http://blog.caplin.com/2010/11/23/iphone-and-ipad-websocket-support/</link>
		<comments>http://blog.caplin.com/2010/11/23/iphone-and-ipad-websocket-support/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 10:59:00 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=4357</guid>
		<description><![CDATA[With the release of iOS 4.2 yesterday Mobile Safari has been upgraded to support WebSocket, along with some other new features too. I have been reasonably vocal about how WebSocket isn&#8217;t the answer to everything, mainly due to browser support and the time it takes for large companies to upgrade...]]></description>
			<content:encoded><![CDATA[<p>With the release of iOS 4.2 yesterday Mobile Safari has been upgraded to <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5tb2JpbGV4d2ViLmNvbS9ibG9nL3NhZmFyaS1pb3MtYWNjZWxlcm9tZXRlci13ZWJzb2NrZXRzLWh0bWw1">support WebSocket</a>, along with some other new features too.</p>
<p>I have been <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzAzLzAyL3doeS13ZS1kb250LW5lZWQtaHRtbDUtd2Vic29ja2V0Lw==">reasonably vocal</a> about how WebSocket isn&#8217;t the answer to everything, mainly due to browser support and the time it takes for large companies to upgrade their browsers and operating systems. However, on mobile devices this might not be such an issue and WebSocket could now be a good option for real time web apps on mobile devices. I would still advocate using a product that wraps this up and handles backwards compatibility and browser differences across all desktop and mobile environments.</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=4357" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2010/11/23/iphone-and-ipad-websocket-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real world benchmarking scenarios</title>
		<link>http://blog.caplin.com/2010/10/01/real-world-benchmarking-scenarios/</link>
		<comments>http://blog.caplin.com/2010/10/01/real-world-benchmarking-scenarios/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 14:04:52 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[QA]]></category>
		<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[Comet]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=3831</guid>
		<description><![CDATA[I have blogged about benchmarking before, describing the process. Most of the benchmarking I have done on Liberator and other products has used fairly simple scenarios, testing the core capabilities of the server to pass messages to clients as fast as possible. The real world is different though, so it...]]></description>
			<content:encoded><![CDATA[<p>I have <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzA1LzE0L2JlbmNobWFya2luZy1saWJlcmF0b3ItdG8tMTAwMDAwLXVzZXJzLw==">blogged about benchmarking</a> before, describing the process. Most of the benchmarking I have done on Liberator and other products has used fairly simple scenarios, testing the core capabilities of the server to pass messages to clients as fast as possible. The real world is different though, so it can be useful to look at other scenarios too.<br />
<span id="more-3831"></span><br />
The standard scenarios I run go something like this:</p>
<p>10 Add clients that subscribe to X subjects.<br />
20 Once subscriptions are done, measure the latency of all messages for 30 seconds<br />
30 GOTO 10</p>
<p>This means we are measuring the steady state of updates, while no other activity is going on.</p>
<p>We have soak tests that do a whole lot more than that, but we&#8217;re talking about benchmarks here.</p>
<p>It is easy to come up with more real world scenarios. For example, clients unsubscribing and subscribing to other data, clients sending messages into the server, and using different features of the platform. The purpose of a benchmark is to have measurable attributes, for the standard benchmarks this is clear &#8211; latency, cpu, numbers of users etc. It is also easy to understand &#8211; &#8216;Liberator can support 100,000 clients receiving 1 message/sec at under 10ms latency&#8217; is is something you can compare to other products (with a few more details like message size clarified).</p>
<p>The problem with the real world scenarios is they are less comparable, less meaningful &#8211; &#8216;Liberator can support X clients subscribing and unsubscribing every minute, while sending messages to the server every 30 seconds&#8230;&#8217; &#8211; it becomes fairly arbitrary. The standard benchmarks are the kind of numbers you can ask a customer for &#8211; how many clients will you have? how fast does your data update? With the real world examples, try asking questions and see what you get &#8211; how often will people switch views (change subscriptions)? how often will users trade? You will get answers that are vague at best.</p>
<p>Nevertheless, I have been doing some benchmarks along these lines to see how various commonly used features impact the performance of Liberator and the platform.</p>
<p><strong>Transformer</strong> is a server that sits behind Liberator and allows modules to be implemented to transform the data coming from sources. So I added Transformer into the chain in the benchmark environment. Tests include using each of the three types of module, C, Java and LUA. The modules themselves do very little apart from passing the message through, so it is really only testing the bridge between languages. Results are good, with very little latency added at all.</p>
<p><strong>Trading</strong>. Clients have to send messages to Liberator to trade, so I added some scenarios that include client to server messages, being echoed back and round trip latencies recorded, as well as looking at the usual update latency of other data.</p>
<p><strong>Containers</strong>. Liberator has the concept of a container. A meta object that can be subscribed to with a single command. A container is a list of references to other data, which you get subscribed to by the server. This is very convenient for long lists of data in grids, such as a list of bonds. It is also possible to only subscribe to a portion of a container, allowing the client to only receive what is visible on screen and not anything scrolled off screen. Items can be added and removed from containers with the clients subscriptions updated accordingly. This is how many clients subscribe to the majority of what is on their screen, so scenarios where subscriptions are made this way are quite important.</p>
<p>I will probably publish some actual graphs soon, but final results are still being run.</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=3831" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2010/10/01/real-world-benchmarking-scenarios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Make bidirectional use of Comet &#8211; not just half of it!</title>
		<link>http://blog.caplin.com/2010/08/04/make-bidirectional-use-of-comet-not-just-half-of-it/</link>
		<comments>http://blog.caplin.com/2010/08/04/make-bidirectional-use-of-comet-not-just-half-of-it/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 15:34:22 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[Trading Technology]]></category>
		<category><![CDATA[Comet]]></category>
		<category><![CDATA[Single Dealer Platform]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=3175</guid>
		<description><![CDATA[In my blog Comet Servers for a Single-Dealer Platform (SDP) one of the questions I posed was whether a Comet server supports bidirectional messaging. The key feature of Comet has always been the &#8216;server push&#8217; aspect &#8211; being able to send data from the server to the client without the...]]></description>
			<content:encoded><![CDATA[<p>In my blog <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzA0LzI3L2NvbWV0LXNlcnZlcnMtZm9yLWEtc2luZ2xlLWRlYWxlci1wbGF0Zm9ybS1zZHAv">Comet Servers for a Single-Dealer Platform (SDP)</a> one of the questions I posed was whether a Comet server supports bidirectional messaging. The key feature of Comet has always been the &#8216;server push&#8217; aspect &#8211; being able to send data from the server to the client without the client initiating the process. Client to server has always been possible, that is how the web has always worked.</p>
<p>Althought the focus for Comet is on server to client push, most Comet solutions provide an API to allow client to server push within the Comet environment &#8211; rather than forcing you to send client to server messages over HTTP directly.<br />
<span id="more-3175"></span><br />
<strong>The &#8216;Web&#8217; way</strong></p>
<p>The problem is many people are still stuck in the &#8216;web&#8217; way of doing things and they only come to Comet when they need server push.</p>
<p><!--more--></p>
<p>The problem with this is it leads to a circular architecture. Somewhere on the server side lives some application logic, sending messages and receiving messages, and probably doing something to them in between. Before the web, or if the web isn&#8217;t a requirement, people would use communication APIs that allow you to send and receive &#8211; from low level socket APIs to higher level messaging &#8211; but you send and receive using the same API.</p>
<p>With some web applications, messages are sent to an Application server using standard web technology, this is then passed on to another server process which may feed into the back (or side?) of the Comet server, which sends messages using Comet to clients. <em>The circular architecture.</em></p>
<p><strong>The Comet way</strong></p>
<p>If you are using a Comet solution, make full use of it. A single API on the client, and a single API on the server.</p>
<p><strong>What benefit do you actually get?</strong></p>
<p>I think I have covered the benefits of using a single API, but there is more. Liberator, and some other Comet servers, provides a security API to control access to the system and granular access to specific data. When using the Comet server for data in both directions this aspect of controlling data access is contained in one place. With a circular architecture, subscribing to data needs to be controlled by the Comet server, but sending data needs to be controlled by the application server. It&#8217;s quite clear that this situation is not a good thing.</p>
<p><strong>What about efficiency?</strong></p>
<p>At the moment, most Comet solutions will be using new HTTP requests for each client to server message &#8211; so technically it isn&#8217;t much different to the circular architecture (as far as the network is concerned). What about the future? I have <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzA2LzAzL3doaWNoLXZlcnNpb24tb2YtaHRtbDUtd2Vic29ja2V0Lw==">blogged about WebSocket</a> before, but if/when WebSocket does become more widespread using Comet servers for bidirectional messages will be more efficient, since client to server messages do not have the overhead of HTTP requests.</p>
<blockquote><p>So take a step into the future, it isn&#8217;t all about posting requests to application servers and all the constraints of the request/response stateless nature of the web. Comet gives you a much more natural way to communicate!</p></blockquote>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=3175" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2010/08/04/make-bidirectional-use-of-comet-not-just-half-of-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>So what can you do with Free Liberator?</title>
		<link>http://blog.caplin.com/2010/07/23/so-what-can-you-do-with-free-liberator/</link>
		<comments>http://blog.caplin.com/2010/07/23/so-what-can-you-do-with-free-liberator/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 13:14:35 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[Comet]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=3149</guid>
		<description><![CDATA[Last week I was on the panel at the London Ajax Comet event along with a number of other people representing Comet products. Comet servers are nothing new and there are lots of options out there now, some open source, some free, some commercial, and more recently some as a...]]></description>
			<content:encoded><![CDATA[<p>Last week I was on the panel at the <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzA3LzE1L2xvbmRvbi1hamF4LWNvbWV0LXBhbmVsLXZpZGVvLw==">London Ajax Comet event</a> along with a number of other people representing Comet products. Comet servers are nothing new and there are lots of options out there now, some open source, some free, some commercial, and more recently some as a service.</p>
<p>Some of my blogs relate to Liberator, but I don&#8217;t often talk about it directly, explain the different versions or describe what you can do with it.</p>
<p><span id="more-3149"></span></p>
<p><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jYXBsaW4uY29tL2NhcGxpbl9saWJlcmF0b3IucGhw">Caplin Liberator</a> is a commercial product that we sell, usually as part of a larger framework called <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jYXBsaW4uY29tL2NhcGxpbl94YXF1YS5waHA=">Caplin Xaqua</a>. Liberator was first developed in 2000 and has been used in many large deployments since then.</p>
<p><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS93cC1jb250ZW50L3VwbG9hZHMvbGliZXJhdG9yX2NhcGxpbi5wbmc="><img class="alignnone size-medium wp-image-3163" title="liberator_caplin" src="http://blog.caplin.com/wp-content/uploads/liberator_caplin-300x222.png" alt="" width="300" height="222" /></a></p>
<p>A few years ago we decided to release <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mcmVlbGliZXJhdG9yLmNvbS8=">Liberator FE</a>, this is a free edition of Caplin Liberator.</p>
<p><strong>So what can you do with Liberator FE?</strong></p>
<p>The short answer is &#8216;pretty much everything you can do with the commercial version&#8217;, but what is that and what are the differences?</p>
<p>Liberator FE comes with two APIs. Most people familiar with Comet will understand the idea of a JavaScript library that runs in the browser talking to a Comet server and exchanging information &#8211; Liberator of course provides this, it is called StreamLink for Browsers. Not all Comet servers provide server side integration APIs though. For some the model is &#8216;everyone is a client&#8217;, so even if something is conceptually a backend component it might still use the same API as the clients. Liberator has the concept of DataSources, as the name suggests these components provide the data. Clients can also provide data, but it is treated differently. Liberator FE provides a Java DataSource API.</p>
<p>So you might take the Java DataSource API and write an application that feeds data into Liberator that is then available for clients. The client application would be a web page using the StreamLink for Browsers JavaScript API to subscribe to the data that the DataSource is publishing. It will receive data in real time, as soon as it is published, and clients can also publish data back to the server &#8211; it is fully bidirectional.</p>
<p>What kind of applications can you develop? How long is a piece of string? You can use your imagination.. Caplin&#8217;s main focus is financial trading applications, but anything that could benefit from real time data or highly interactive experiences can be developed. Sports scores, chat and other social media applications, real time monitoring, games, whatever you can think of! We&#8217;d love to hear of other ideas.</p>
<blockquote><p><strong>So what can&#8217;t you do?</strong></p>
<p>Liberator FE is a full blown version of Caplin Liberator, performance, scalability etc, it is all the same. However, you don&#8217;t get other language APIs, for example, .Net, Silverlight, C/C++. You don&#8217;t get two further integration APIs, for handling realtime permissioning and monitoring.</p>
<p>You also cannot use Liberator FE for a commercial application &#8211; it is against the license.</p></blockquote>
<p>Liberator FE has been downloaded by a lot of people and we hope this is a good way for people to get familiar with Liberator and Comet technology &#8211; whether it is for a non-commercial project or as a way of easily evaluating Liberator for a commercial project.</p>
<p>So if you want to try out Comet, if you are interested in some of the things I blog about and want to try it out, <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mcmVlbGliZXJhdG9yLmNvbS8=">Liberator FE</a> is a good place to start! Let us know how you get on.</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=3149" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2010/07/23/so-what-can-you-do-with-free-liberator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple releases Safari 5 with HTML 5 WebSocket support</title>
		<link>http://blog.caplin.com/2010/06/08/apple-releases-safari-5-with-html-5-websocket-support/</link>
		<comments>http://blog.caplin.com/2010/06/08/apple-releases-safari-5-with-html-5-websocket-support/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 08:07:32 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=2666</guid>
		<description><![CDATA[The iPhone 4 announcement obviously trumped this at WWDC 2010, but Apple have also released Safari 5. If you read about what&#8217;s new you will see lots of HTML5 stuff, including WebSocket. But as I wrote about last week, which version of HTML WebSocket? Is it the same as the...]]></description>
			<content:encoded><![CDATA[<p>The iPhone 4 announcement obviously trumped this at <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vd3dkYy8=">WWDC 2010</a>, but Apple have also released Safari 5. If you read about <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJpL3doYXRzLW5ldy5odG1s">what&#8217;s new</a> you will see lots of HTML5 stuff, including WebSocket.</p>
<p>But as I wrote about last week, <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzA2LzAzL3doaWNoLXZlcnNpb24tb2YtaHRtbDUtd2Vic29ja2V0Lw==">which version of HTML WebSocket?</a> Is it the same as the latest version of Google Chrome? Google made a clear statement about the version and how it will not maintain compatibility until the specification is more stable, but I cannot find any info from Apple on this. Is it the same code base since they are both WebKit browsers?</p>
<p>So that&#8217;s the two smaller browsers (market share) with some support for WebSocket, when will IE and Firefox join the party?</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=2666" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2010/06/08/apple-releases-safari-5-with-html-5-websocket-support/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Which version of HTML5 WebSocket?</title>
		<link>http://blog.caplin.com/2010/06/03/which-version-of-html5-websocket/</link>
		<comments>http://blog.caplin.com/2010/06/03/which-version-of-html5-websocket/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 08:11:37 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Comet]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Real-time web]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=2620</guid>
		<description><![CDATA[I have blogged about Why we don&#8217;t need HTML5 WebSocket previously &#8211; and to recap, it&#8217;s not that we don&#8217;t need it, it&#8217;s not really that important until it is far more widespread and that is a very long way off. Anyway, Google have just announced that they have Updated...]]></description>
			<content:encoded><![CDATA[<p>I have blogged about <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2FwbGluLmNvbS8yMDEwLzAzLzAyL3doeS13ZS1kb250LW5lZWQtaHRtbDUtd2Vic29ja2V0Lw==">Why we don&#8217;t need HTML5 WebSocket</a> previously &#8211; and to recap, it&#8217;s not that we don&#8217;t need it, it&#8217;s not really that important until it is far more widespread and that is a very long way off.</p>
<p>Anyway, Google have just announced that they have <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuY2hyb21pdW0ub3JnLzIwMTAvMDYvd2Vic29ja2V0LXByb3RvY29sLXVwZGF0ZWQuaHRtbA==">Updated WebSocket</a> in Chrome. I follow the hybi mailing list which is where most WebSocket discussion goes on and  there is far from a consensus on many aspects of WebSocket, which has led to the changes the Google blog mentions, and there will almost certainly be more. Google noted this too and state that they will continue to update their WebSocket implementation regardless of compatibility issues until a more stable spec is available.</p>
<p>So where does that leave us? The only browser that supports WebSocket is updating and will continue to update its support for WebSocket, breaking compatibility with WebSocket servers, who will most likely also be updating to newer versions as they are available. I think this is the right choice for Chrome and server implementers &#8211; but it does mean that WebSocket for any kind of serious web application is clearly not viable. I hope any web apps and server implementations can handle the compatibility issues gracefully so they can fallback to other Comet techniques, as they have to with all other browsers anyway.</p>
<p>I look forward to a day when WebSocket is usable &#8211; but for now it&#8217;s business as usual.</p>
 <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=2620" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.caplin.com/2010/06/03/which-version-of-html5-websocket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

