logo

Cryptocurrency Exchange Platform - OpenDAX

#Guide |API Docs |Consulting |Community

Rango is part of OpenDAX Trading Platform

RANGO

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.

#Configuration

To simplify the migration from Ranger all environement variables are the same:

VARIABLEDEFAULTDESCRIPTION
RANGER_HOST0.0.0.0Hostname to expose the websocket connection
RANGER_PORT8080Websocket server port
RABBITMQ_HOSTlocalhostRabbitMQ hostname to connect to
RABBITMQ_PORT5672RabbitMQ port
RABBITMQ_USERguestUsername used to authenticate to RabbitMQ
RABBITMQ_PASSWORDguestPassword used to authenticate to RabbitMQ

#Metrics

Rango exposes metrics in Prometheus format on the port 4242.

Rango metrics

METRICTYPEDESCRIPTION
rango_hub_clients_countgaugeNumber of clients currently connected
rango_hub_subscriptions_countgaugeNumber of user subscribed to a topic

HTTP metrics

METRICTYPEDESCRIPTION
promhttp_metric_handler_requests_in_flightgaugeCurrent number of scrapes being served.
promhttp_metric_handler_requests_totalcounterTotal number of scrapes by HTTP status code.

Process metrics

METRICTYPEDESCRIPTION
process_cpu_seconds_totalcounterTotal user and system CPU time spent in seconds.
process_max_fdsgaugeMaximum number of open file descriptors.
process_open_fdsgaugeNumber of open file descriptors.
process_resident_memory_bytesgaugeResident memory size in bytes.
process_start_time_secondsgaugeStart time of the process since unix epoch in seconds.
process_virtual_memory_bytesgaugeVirtual memory size in bytes.
process_virtual_memory_max_bytesgaugeMaximum amount of virtual memory available in bytes.

Go standard metrics

METRICTYPEDESCRIPTION
go_gc_duration_seconds{quantile}summaryA summary of the pause duration of garbage collection cycles.
go_gc_duration_seconds_sum
go_gc_duration_seconds_count
go_goroutinesgaugeNumber of goroutines that currently exist.
go_info{version}gaugeInformation about the Go environment.
go_memstats_alloc_bytesgaugeNumber of bytes allocated and still in use.
go_memstats_alloc_bytes_totalcounterTotal number of bytes allocated, even if freed.
go_memstats_buck_hash_sys_bytesgaugeNumber of bytes used by the profiling bucket hash table.
go_memstats_frees_totalcounterTotal number of frees.
go_memstats_gc_cpu_fractiongaugeThe fraction of this program's available CPU time used by the GC since the program started.
go_memstats_gc_sys_bytesgaugeNumber of bytes used for garbage collection system metadata.
go_memstats_heap_alloc_bytesgaugeNumber of heap bytes allocated and still in use.
go_memstats_heap_idle_bytesgaugeNumber of heap bytes waiting to be used.
go_memstats_heap_inuse_bytesgaugeNumber of heap bytes that are in use.
go_memstats_heap_objectsgaugeNumber of allocated objects.
go_memstats_heap_released_bytesgaugeNumber of heap bytes released to OS.
go_memstats_heap_sys_bytesgaugeNumber of heap bytes obtained from system.
go_memstats_last_gc_time_secondsgaugeNumber of seconds since 1970 of last garbage collection.
go_memstats_lookups_totalcounterTotal number of pointer lookups.
go_memstats_mallocs_totalcounterTotal number of mallocs.
go_memstats_mcache_inuse_bytesgaugeNumber of bytes in use by mcache structures.
go_memstats_mcache_sys_bytesgaugeNumber of bytes used for mcache structures obtained from system.
go_memstats_mspan_inuse_bytesgaugeNumber of bytes in use by mspan structures.
go_memstats_mspan_sys_bytesgaugeNumber of bytes used for mspan structures obtained from system.
go_memstats_next_gc_bytesgaugeNumber of heap bytes when next garbage collection will take place.
go_memstats_other_sys_bytesgaugeNumber of bytes used for other system allocations.
go_memstats_stack_inuse_bytesgaugeNumber of bytes in use by the stack allocator.
go_memstats_stack_sys_bytesgaugeNumber of bytes obtained from system for stack allocator.
go_memstats_sys_bytesgaugeNumber of bytes obtained from system.
go_threadsgaugeNumber of OS threads created.

#Start the server

./rango

#Connect to public channel

wscat --connect localhost:8080/public

#Connect to private channel

wscat --connect localhost:8080/private --header "Authorization: Bearer ${JWT}"

#Messages

Subscribe to a stream list

{"event":"subscribe","streams":["eurusd.trades","eurusd.ob-inc"]}

Unsubscribe to one or several streams

{"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"]}