nanomsg / Mangos
Programming Languages
Projects that are alternatives of or similar to Mangos
ifdef::env-github[] :note-caption: ℹ️ :important-caption: ❗️ :warning-caption: ❗️ endif::[] = mangos
image:https://img.shields.io/github/workflow/status/nanomsg/mangos/linux?logoColor=grey&logo=ubuntu&label=[Linux Status,link="https://github.com/nanomsg/mangos/actions"] image:https://img.shields.io/github/workflow/status/nanomsg/mangos/windows?logoColor=grey&logo=windows&label=[Windows Status,link="https://github.com/nanomsg/mangos/actions"] image:https://img.shields.io/github/workflow/status/nanomsg/mangos/darwin?logoColor=grey&logo=apple&label=[Darwin Status,link="https://github.com/nanomsg/mangos/actions"] image:https://img.shields.io/codecov/c/github/nanomsg/mangos?logoColor=grey&logo=codecov&label=[Coverage,link="https://codecov.io/gh/nanomsg/mangos"] image:https://img.shields.io/codacy/grade/0addd1f6c00e4251b37854f3499e6d76?logoColor=grey&logo=codacy&label=[Code Quality,link="https://app.codacy.com/manual/gdamore/mangos/dashboard"] image:https://img.shields.io/discord/639573728212156478?label=&logo=discord[Discord,link="https://discord.gg/wewTkby"] image:https://img.shields.io/badge/godoc-docs-blue.svg?label=&logo=go[GoDoc,link="https://godoc.org/go.nanomsg.org/mangos"] image:https://img.shields.io/github/license/nanomsg/mangos.svg?logoColor=silver&logo=Open Source Initiative&label=&color=blue[Apache 2.0 License,link="https://github.com/nanomsg/mangos/blob/master/LICENSE"] image:https://img.shields.io/github/v/tag/nanomsg/mangos?logo=github&sort=semver&label=[Latest version,link="https://github.com/nanomsg/mangos/releases"] // image:https://goreportcard.com/badge/go.nanomsg.org/mangos?style=flat[Go Report Card,link="https://goreportcard.com/report/go.nanomsg.org/mangos"]
[cols="2",grid="none",frame="none",options="autowidth"]
|===
|Mangos™ is an implementation in pure Go of the SP
("Scalability Protocols
") messaging system.
These are colloquially known as a "nanomsg
".
a|image::mangos.jpg[float="right"]
|===
IMPORTANT: The import path has changed! Please change any references
from nanomsg.org/go/mangos/v2
to go.nanomsg.org/mangos/v3
.
The old v2 imports will still work for old applications, provided that
a sufficiently modern version of Go is used. However, no further work
will be done on v2.
TIP: Versions 1 and 2 of mangos were at different import locations.
Those versions will still inter-operate with this version, except that
within the same process the inproc
transport can only be used by
consumers using the same version of mangos.
The modern C implementation of the SP protocols is available as https://github.com/nanomsg/nng[__NNG™__].
The original implementation of the SP protocols is available as http://www.nanomsg.org[__nanomsg™__].
Generally (modulo a few caveats) all of these implementations can inter-operate.
The design is intended to make it easy to add new transports with almost
trivial effort, as well as new topologies ("protocols
" in SP parlance.)
At present, all of the Req/Rep, Pub/Sub, Pair, Bus, Push/Pull, and Surveyor/Respondent patterns are supported. This project also supports an experimental protocol called Star.
Supported transports include TCP, inproc, IPC, WebSocket, WebSocket/TLS and TLS.
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, except for the ZeroTier transport and the PAIRv1
protocol, which are only supported in NNG at this time.
There are a number of projects that use these 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
== Documentation
For docs, see https://godoc.org/go.nanomsg.org/mangos or run:
$ godoc -http=:6060
then see http://localhost:6060/pkg/go.nanomsg.org/mangos/
== Testing
This package supports internal self tests, which can be run in the idiomatic Go way. (Note that most of the tests are in a test subdirectory.)
$ go test go.nanomsg.org/mangos/v3/...
There are also internal benchmarks available:
$ go test -bench=. go.nanomsg.org/mangos/v3/test
== Commercial Support
mailto:[email protected][Staysail Systems, Inc.] offers http://staysail.tech/support/mangos[commercial support] for mangos.
== Examples
Some examples are posted in the directories under examples/
in this project.
These examples are rewrites (in Go) of Tim Dysinger's http://nanomsg.org/gettingstarted/index.html[Getting Started with Nanomsg].
Running go doc
in the example directories will yield information about how
to run each example program.
Enjoy!
''' Copyright 2020 The Mangos Authors
mangos™, Nanomsg™ and NNG™ are http://nanomsg.org/trademarks.html[trademarks] of Garrett D'Amore.