dmsg
is a distributed messaging system comprised of three types of services:
dmsg.Client
represents a user/client that wishes to use the dmsg network to establishdmsg.Session
s anddmsg.Stream
s.dmsg.Server
represents a service that proxiesdmsg.Stream
s betweendmsg.Client
s.dmsg.Discovery
acts like a DNS ofdmsg.Server
s anddmsg.Client
s, identifying them via their public keys.
[D]
S(1) S(2)
// \\ // \\
// \\ // \\
C(A) C(B) C(C) C(D)
Legend:
[D]
-dmsg.Discovery
S(X)
-dmsg.Server
C(X)
-dmsg.Client
dmsg.Client
s and dmsg.Server
s are identified via secp256k1
public keys, and store records of themselves in the dmsg.Discovery
. Records of dmsg.Client
s also includes public keys of dmsg.Server
s that are delegated to proxy data between it and other dmsg.Client
s.
The connection between a dmsg.Client
and dmsg.Server
is called a dmsg.Session
. A connection between two dmsg.Client
s (via a dmsg.Server
) is called a dmsg.Stream
. A data unit of the dmsg network is called a dmsg.Frame
.