Peer to Peer Services
Universal Messaging provides a rich set of APIs that provide developers with the ability to create Peer to Peer (P2P) applications. We call these Peer to Peer applications Services. This guide will demonstrate how Universal Messaging Peer to Peer Services work, and provides examples code snippets for all relevant concepts.
P2P Service Components
There are two parts to a Peer to Peer Service in Universal Messaging: a Server Service and a Client.
When a Server Service is running, it is visible within the Universal Messaging Namespace and is available to any Client wishing to connect. The Universal Messaging Realm Server acts as the bridge that connects Clients to Server Services. Each Server Service can support multiple Clients.
Universal Messaging Peer to Peer Client and Server Services
The Server Service is a process that registers itself with a Universal Messaging Realm so it is visible to Clients wishing to connect.
A Universal Messaging Peer to Peer Service Client is a process that connects to a Universal Messaging Realm, obtains a reference to a Server Service and begins communicating with it.
When a Client connects to the Server Service, all communication between the Client and server service takes place through the Universal Messaging Realm, using Universal Messaging's standard communication protocols.
P2P Service Types
There are two types of Universal Messaging Peer to Peer Services:
Universal Messaging Peer to Peer Event-based Services communicate via events which are published by the Event-based Client (see Peer to Peer Event-based Clients
), and received and responded to by the Event-based Server Service.
Universal Messaging Peer to Peer Stream-based Services communicate via input and output streams on both the Client and Server Service. Anything written to the output stream of the Stream-based Service Client (see Peer to Peer Stream-based Clients
) is received via the input stream of the Stream-based Server Service (see Peer to Peer Stream-based Server Services
) and vice versa.
The code examples "P2P Echo" and "P2P Shell" give full application source code to implement Server Services and Clients: