README.md

mangos

Package mangos is an implementation in pure Go of the SP
("Scalability Protocols")
messaging system.
This makes heavy use of go channels, internally, but it can operate
on systems that lack support for cgo.

NOTE: This is mangos version 1, but
mangos v2 is available.
Version 2 has some API breaking changes relative to version 1,
but introduces new and
useful features, and is recommended for new development.
Migration to mangos v2 is strongly encouraged, as no further
development is taking place on v1.

The reference implementation of the SP protocols is available as
nanomsg™; there is also an effort to implement
an improved and more capable version of nanomsg called
NNG™.

The design is intended to make it easy to add new transports with almost trivial
effort, as well as new topologies ("protocols" in SP terminology.)

At present, all of the Req/Rep, Pub/Sub, Pair, Bus, Push/Pull, and
Surveyor/Respondent patterns are supported.

Additionally, there is an experimental new pattern called STAR available. This
pattern is like Bus, except that the messages are delivered not just to
immediate peers, but to all members of the topology. Developers must be careful
not to create cycles in their network when using this pattern, otherwise
infinite loops can occur.

Supported transports include TCP, inproc, IPC, WebSocket, WebSocket over TLS and
TLS over TCP.
Use addresses of the form "tls+tcp://:" to access TLS.
Note that ipc:// is not supported on Windows (by either this or the reference
implementation.) Forcing the local TCP port in Dial is not supported yet (this
is rarely useful).

Basic interoperability with nanomsg and NNG has been verified (you can do
so yourself with nanocat and macat) for all protocols and transports
that NNG and nanomsg support.
Additionally there are a number of projects that use the two products together.

There is a third party experimental QUIC transport available at
quic-mangos. (An RFE to make this
transport official exists.)

If you find this useful, I would appreciate knowing about it. I can be reached
via my email address, garrett -at- damore -dot- org