
Rango is a general purpose websocket server which dispatch public and private messages from RabbitMQ. Rango is made as a drop-in replacement of Ranger built in ruby. It was designed to be very fast, scalable with a very low memory footprint.
To simplify the migration from Ranger all environement variables are the same:
| VARIABLE | DEFAULT | DESCRIPTION |
|---|---|---|
| RANGER_HOST | 0.0.0.0 | Hostname to expose the websocket connection |
| RANGER_PORT | 8080 | Websocket server port |
| RABBITMQ_HOST | localhost | RabbitMQ hostname to connect to |
| RABBITMQ_PORT | 5672 | RabbitMQ port |
| RABBITMQ_USER | guest | Username used to authenticate to RabbitMQ |
| RABBITMQ_PASSWORD | guest | Password used to authenticate to RabbitMQ |
Rango exposes metrics in Prometheus format on the port 4242.
| METRIC | TYPE | DESCRIPTION |
|---|---|---|
| rango_hub_clients_count | gauge | Number of clients currently connected |
| rango_hub_subscriptions_count | gauge | Number of user subscribed to a topic |
| METRIC | TYPE | DESCRIPTION |
|---|---|---|
| promhttp_metric_handler_requests_in_flight | gauge | Current number of scrapes being served. |
| promhttp_metric_handler_requests_total | counter | Total number of scrapes by HTTP status code. |
| METRIC | TYPE | DESCRIPTION |
|---|---|---|
| process_cpu_seconds_total | counter | Total user and system CPU time spent in seconds. |
| process_max_fds | gauge | Maximum number of open file descriptors. |
| process_open_fds | gauge | Number of open file descriptors. |
| process_resident_memory_bytes | gauge | Resident memory size in bytes. |
| process_start_time_seconds | gauge | Start time of the process since unix epoch in seconds. |
| process_virtual_memory_bytes | gauge | Virtual memory size in bytes. |
| process_virtual_memory_max_bytes | gauge | Maximum amount of virtual memory available in bytes. |
| METRIC | TYPE | DESCRIPTION |
|---|---|---|
| go_gc_duration_seconds{quantile} | summary | A summary of the pause duration of garbage collection cycles. |
| go_gc_duration_seconds_sum | ||
| go_gc_duration_seconds_count | ||
| go_goroutines | gauge | Number of goroutines that currently exist. |
| go_info{version} | gauge | Information about the Go environment. |
| go_memstats_alloc_bytes | gauge | Number of bytes allocated and still in use. |
| go_memstats_alloc_bytes_total | counter | Total number of bytes allocated, even if freed. |
| go_memstats_buck_hash_sys_bytes | gauge | Number of bytes used by the profiling bucket hash table. |
| go_memstats_frees_total | counter | Total number of frees. |
| go_memstats_gc_cpu_fraction | gauge | The fraction of this program's available CPU time used by the GC since the program started. |
| go_memstats_gc_sys_bytes | gauge | Number of bytes used for garbage collection system metadata. |
| go_memstats_heap_alloc_bytes | gauge | Number of heap bytes allocated and still in use. |
| go_memstats_heap_idle_bytes | gauge | Number of heap bytes waiting to be used. |
| go_memstats_heap_inuse_bytes | gauge | Number of heap bytes that are in use. |
| go_memstats_heap_objects | gauge | Number of allocated objects. |
| go_memstats_heap_released_bytes | gauge | Number of heap bytes released to OS. |
| go_memstats_heap_sys_bytes | gauge | Number of heap bytes obtained from system. |
| go_memstats_last_gc_time_seconds | gauge | Number of seconds since 1970 of last garbage collection. |
| go_memstats_lookups_total | counter | Total number of pointer lookups. |
| go_memstats_mallocs_total | counter | Total number of mallocs. |
| go_memstats_mcache_inuse_bytes | gauge | Number of bytes in use by mcache structures. |
| go_memstats_mcache_sys_bytes | gauge | Number of bytes used for mcache structures obtained from system. |
| go_memstats_mspan_inuse_bytes | gauge | Number of bytes in use by mspan structures. |
| go_memstats_mspan_sys_bytes | gauge | Number of bytes used for mspan structures obtained from system. |
| go_memstats_next_gc_bytes | gauge | Number of heap bytes when next garbage collection will take place. |
| go_memstats_other_sys_bytes | gauge | Number of bytes used for other system allocations. |
| go_memstats_stack_inuse_bytes | gauge | Number of bytes in use by the stack allocator. |
| go_memstats_stack_sys_bytes | gauge | Number of bytes obtained from system for stack allocator. |
| go_memstats_sys_bytes | gauge | Number of bytes obtained from system. |
| go_threads | gauge | Number of OS threads created. |
./rango
wscat --connect localhost:8080/public
wscat --connect localhost:8080/private --header "Authorization: Bearer ${JWT}"
{"event":"subscribe","streams":["eurusd.trades","eurusd.ob-inc"]}
{"event":"unsubscribe","streams":["eurusd.trades"]}
{"event":"subscribe","streams":["btcusd.trades","ethusd.ob-inc","ethusd.trades","xrpusd.ob-inc","xrpusd.trades","usdtusd.ob-inc","usdtusd.trades"]}