anycable-go

module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2020 License: MIT

README

Build CircleCI Docker Gitter Documentation

AnyCable-Go WebSocket Server

WebSocket server for AnyCable.

Important This is a readme for the upcoming v1.0 release. For v0.6.x see the readme from the 0-6-stable branch.

Versioning

Important Use the same major version of AnyCable-Go as your AnyCable gem. AnyCable-Go uses the same major version number (and minor version as well for 0.x series) as other libraries to indicate the compatibility.

NOTE: AnyCable-Go v1.0 is backward-compatible with v0.6.x series (to allow incremental upgrades). The next minor relase (v1.1) will drop 0.6.x support.

Installation

The easiest way to install AnyCable-Go is to download a pre-compiled binary.

MacOS users could install it with Homebrew

brew install anycable-go

Arch Linux users can install anycable-go package from AUR.

Of course, you can install it from source too:

go get -u -f github.com/anycable/anycable-go/cmd/anycable-go

NOTE: right now it's not possible to build anycable-go with mruby support using the command above. To install anycable-go with mruby from source try:

go get -d -u -f github.com/anycable/anycable-go/cmd/anycable-go && (cd $GOPATH/src/github.com/anycable/anycable-go && make prepare-mruby install-with-mruby)

Upgrade

For instructions on how to upgrade to a newer version see upgrade notes.

Heroku

See heroku-anycable-go buildpack.

Usage

Run server:

$ anycable-go

=> INFO 2020-02-05T08:44:57.684Z context=main Starting AnyCable 1.0.0

You can also provide configuration parameters through the corresponding environment variables (i.e. ANYCABLE_RPC_HOST, ANYCABLE_REDIS_URL, etc).

For more information about available options run anycable-go -h.

📑 Documentation

Redis Sentinel

To enable redis sentinel support set --redis-sentinels to a comma separated list of sentinels (format: <host>:<port>,...) and set the --redis-url like that: redis://[:<redis_password>@]<redis_master_name>

Build

# first, prepare mruby (we embed it by default)
make prepare-mruby

# then build the Go binary (will be available in dist/anycable-go)
make

You can run tests with the following commands:

# Run Golang unit tests
make test

# run once
make prepare

# Run integrations tests
make test-conformance

We use golangci-lint to lint Go source code:

golangci-lint run

Docker

See available images here.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/anycable/anycable-go.

Please, provide reproduction script (using this template) when submitting bugs if possible.

License

The library is available as open source under the terms of the MIT License.

Security Contact

To report a security vulnerability, please contact us at anycable@evilmartians.com. We will coordinate the fix and disclosure.

Directories

Path Synopsis
cmd
Package common contains struts and interfaces shared between multiple components
Package common contains struts and interfaces shared between multiple components
Package gobench implements alternative controller for benchmarking Go server w/o RPC.
Package gobench implements alternative controller for benchmarking Go server w/o RPC.
Package stats contains calculation utils for benchmarks Based on https://github.com/anycable/websocket-bench/blob/master/benchmark/stat.go
Package stats contains calculation utils for benchmarks Based on https://github.com/anycable/websocket-bench/blob/master/benchmark/stat.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL