Nirvana Communication Protocols and RNAMEs
Nirvana supports several Native Communication Protocols and Comet Communication Protocols.
The following table shows the Communication Protocols supported by each Nirvana Client API:
| Native Communication Protocols | ||||||
|---|---|---|---|---|---|---|
| SSL (nsps) | HTTP (nhp) | HTTPS (nhps) | HTTPS (https) | HTTP (http) | ||
| Java | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| C# .NET | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| C++ | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Excel VBA | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| JavaScript | ![]() |
![]() |
![]() via WebSocket |
![]() via WebSocket |
![]() |
![]() |
| Adobe Flex | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Microsoft Silverlight | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
| Android | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| .NET Compact Framework | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Blackberry & J2ME | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
RNAMEs
An RNAME is used by Nirvana Clients to specify how a connection should be made to a Nirvana Realm Server.
The format of the RNAME will be determined by communications protocol required by the client. These are described below for both native and comet communications protocols.
RNAMEs for Native Communications Protocols
A Native Communication Protocol RNAME string looks like:
<protocol> :// <hostname> :< port>,<protocol> :// <hostname> :< port>
where:
- <protocol> can be one of the 4 available native communications protocol identifiers nsp (socket), nhp (HTTP), nsps (SSL) and nhps(HTTPS).
- <hostname> is the hostname or IP address that the Nirvana Realm is running
- <port> is the TCP port on that hostname that the Nirvana Realm is bound to using the same wire protocol.
The RNAME entry can contain a comma-separated list of values each one representing the communications protocol, host and port currently running on a Nirvana Realm. If a Nirvana session becomes disconnected and cannot reconnect it will cascade through the list of RNAMES provided in the comma separated RNAME until it managed to reconnect. This functionality is particularly useful within the contexts of both clustering and failover.
Native Communications Protocol Client Extensions
In addition to the supported protocols shown above, Nirvana clients implemented with APIs that support Native Communication Protocols have a number of extensions available to them:-
nhpsc
This mode of https extracts any configured proxy from within the JVM settings and issues a PROXY CONNECT command via said proxy to establish a connection with the required Nirvana realm. The established connection then becomes an SSL encrypted socket connection mode and no longer uses http/https connections for each server request. If the proxy uses authentication then authentication parameters are also extracted from the JVM settings.
-
nhpm and nhpsm
nhpm and nhpsm are multiplexed versions of the standard http and https protocols. The key difference is that any sessions established using a multiplexed RNAME only ever establish one connection to the Nirvana realm server. This is very useful for circumventing browser connection limits while supporting multiple sessions.
RNAMEs for Comet Communication Protocols
Nirvana's webExpress plugin supports lightweight web-based Comet Communication Protocols. This exposes a core subset of the native Nirvana functionality including publish and subscribe, message queues and peer to peer messaging.
As with all Nirvana plugins, the webExpress plugin is vended from a specific URL path on the server. The webExpress plugin can be added to both HTTP and HTTPS interfaces.
An RNAME string for Comet clients looks like:
<protocol> :// <hostname> :< port> /
where:
- <protocol> can be one of the two protocols that support plugins in Nirvana HTTP or HTTPS.
- <hostname> is the hostname or IP address that the Nirvana Realm is running
- <port> is the TCP port on that hostname that the Nirvana Realm is bound to using the same wire protocol.
- <path> is the path that has been specified for this webExpress plugin.


