1.1.0 • Published 6 years ago

iota-transaction-stream v1.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

IOTA Transaction Stream

A microservice that transmits new transactions from an IOTA node to any number of listeners, in real-time, through WebSockets.

This is a prerequisite for running Chatangle or Votangle.

Installation Instructions

Dependencies

You may need a C compiler installed on your system before you can install IOTA Transaction Stream. This is because the ZeroMQ dependency must compile during installation.

On CentOS:

sudo yum -y install gcc-c++ make

General Installation

For global installation:

npm install -g iota-transaction-stream

This will make IOTA Transaction Stream available as the command iota-transaction-stream.

Installation Errors

If you get errors during install about bad permissions, your npm was probably installed as the root user. It is recommended to install npm as non-root, like with nvm. A workaround is to install with the --unsafe-perm flag like so:

npm install -g --unsafe-perm iota-transaction-stream

Usage

You must have an IRI with config ZMQ_ENABLED = true. The ZMQ runs on port 5556 by default.

If globally installed, example:

iota-transaction-stream --iotaIP 123.45.67.890 --iotaZMQPort 5556 --webSocketServerPort 8008

If installed locally or running from an IDE:

npm run start -- --iotaIP 123.45.67.890 --iotaZMQPort 5556 webSocketServerPort 8008

Running in the background, example:

nohup iota-transaction-stream --iotaIP 123.45.67.890 --iotaZMQPort 5556 --webSocketServerPort 8008 >> output.log &

Then tail the logs with

tail -f output.log

Hooking Into The Stream

These lines of Javascript can be copy-pasted into the Chrome console after starting the server locally to test if the stream is working:

let ws = new WebSocket('ws://transactionStreamIP:8008')
ws.addEventListener('message', message => {console.log('message', message)})
ws.addEventListener('error', message => {console.error('error', message)})
ws.addEventListener('open', message => {console.log('open', message)})