Laharsub is an open source messaging server designed for real time communication in web applications. Laharsub supports a publish/subscribe message exchange pattern many modern, real time web applications use. Online chat and collaboration, multiplayer online
gaming, news or stock quote updates, and many more types of web applications created today require real time data transfer from the server to the web client, and between web clients. Laharsub server is implemented in .NET and ships with support for several
enables adding support for a variety of backend technologies to support scale out to a large number of concurrent users. The memory based backend implementation included in Laharsub does not support scale-out but offers high performance in small deployments
(several thousand users).
communication pattern enabled by Ajax technologies. Browser based chat or casual multiplayer internet games must exchange messages between several users in real time. News or financial web applications must deliver news headlines or stock quote updates to
a large number of users almost instantaneously. Communication patterns in these applications often follow a publish/subscribe model, with topics that multiple clients can publish to, subscribe to, and receive notifications from. A topic may represent a chat
room, an ongoing game, or a particular stock ticker. Messages published to a topic may represent a chat message, a game move, or an update in the stock price, and may originate from users of a client application or from a backend system that delivers fresh
data to the application. Subscriptions to a topic enable client applications to receive almost instantaneous, asynchronous notifications whenever a new message is published to a topic. These may be chat messages from other participants of a chat, game moves
made by an opponent, or updated stock quotes.
Laharsub supports messaging needs of modern web applications with a design specifically targeting the publish\subscribe model, and a choice of protocols and technologies optimized for the web platform. Laharsub has the three-tier architecture: clients publish
or subscribe messages from a middle tier web service that implements the web friendly protocol and delegates the core publish\subscribe functionality and message storage to a backend. The publish\subscribe model is exposed as a set of REST APIs using a protocol
based on HTTP long polling (WebSockets will be supported in the future). The protocol allows multiplexing subscriptions to several topics on a single HTTP long poll request, therefore reducing the use of connections that are subject to a quota in a browser
and .NET. However, given the choice of HTTP as the core protocol, any platform capable of making HTTP requests can act as a client of Laharsub. The middle tier Laharsub server is implemented in .NET Framework and can be deployed as a Windows Service or as
a console application, on premise or in the cloud.
One of the design goals of Laharsub is scalability to a large number of concurrent users. The middle tier web service architecture is extensible and allows configuration of a custom backend that provides publish\subscribe functionality, message storage,
and scale-out to multiple nodes in a web farm. The Laharsub middle tier service itself is stateless and as such scales out well. Laharsub includes a memory based backend implementation that does not scale out beyond a single node, but offers high performance
in deployments up to several thousand users.
Laharsub is an active open source project that continuously adds new capabilities and improves existing ones. Web orientation, scalability, performance, and flexibility, are the key principles driving new development. Current areas of investigation include
facilitating deployment in Windows Azure, investigating backend technologies to support scale out, security, and support for WebSockets. However, the priorities are often adjusted as a result of community collaboration, so check out
http://laharsub.codeplex.com for the latest developments.
You can download the latest stable release and
start using it. Alternatively,
enlist to the source code or just
browse it on codeplex. The
documentation section has more in-depth information about current status, goals, requirements,
architecture, and design. Please use the
discussions section to express you opinion about the current open issues or start your own thread. Use the
issue tracker to file bugs or feature ideas.