1.0.0 • Published 3 years ago

huobi-ws-js v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
3 years ago

huobi-ws-js

npm version Build Codecov branch

dependencies Status devDependencies Status

This is a non-official HuoBi web socket(v2) integration nodejs module.

(這是非官方的火幣web socket(v2) nodejs module。)


Install

$ npm i huobi-ws-js

Usage

Establish web socket connection to HuoBi and allow defining your own message handler function.

import { HbWebSocket } from 'huobi-ws-js'

...

// Handler for authentication result
const authResultHandler: HbWebSocketAuthResultHandler = async ({ success, msg, ws, service }) => {
    if (success) {
        // ...
    } else {
        console.error('auth error')
    }
}

// General message handling (e.g: push data message)
const messageHandler: HbWebSocketMessageHandler = async ({ msg, ws, service }) => {
    // ...
}

...

const hbWs = new HbWebSocket({
    name: 'root',
    wsUrl: 'wss://api-aws.huobi.pro/ws/v2',
    profileConfig: {
        accessKey: '<REPLACE_WITH_YOUR_ACCESS_KEY>',
        secretKey: '<REPLACE_WITH_YOUR_SECRET_KEY>',
    },
    authResultHandler,
    messageHandler,
})
hbWs.run()

API

new service class

Create a new service class which is reusable to call multiple REST APIs

const hbWs = new HbWebSocket({
    name: 'root',
    wsUrl: 'wss://api-aws.huobi.pro/ws/v2',
    profileConfig: {
        accessKey: '<REPLACE_WITH_YOUR_ACCESS_KEY>',
        secretKey: '<REPLACE_WITH_YOUR_SECRET_KEY>',
    },
    authResultHandler,
    messageHandler,
})

constructor parameters:

ParameterTypeDescriptionMandatory
namestringjust a labelN
wsUrlstringwebsocket server base URLY
profileConfig.accessKeystringaccess keyY
profileConfig.secretKeystringsecretKeyY
authResultHandlerfunctionHandler for authentication. You should pass in handler to subscribe channels after success authentication.N, but you should pass in
messageHandlerfunctionHandler for handling messages (initial auth/ping messages are excluded)N, but you should pass in
loggerobjectyour logger implementationN

run web socket

hbWs.run()

close web socket

hbWs.close()

subscribe channel

method signature:

sub(ch: string): void

usage:

const authResultHandler: HbWebSocketAuthResultHandler = async ({ success, msg, ws, service }) => {
    if (success) {
        service.sub('accounts.update#1') // subscribe to account updates after initial authentication success
    } else {
        console.error('auth error')
    }
}

Example

import { HbWebSocket } from 'huobi-ws-js'

const options = {
    wsUrl: 'wss://api-aws.huobi.pro/ws/v2',
    profileConfig: {
        accessKey: '<REPLACE_WITH_YOUR_ACCESS_KEY>',
        secretKey: '<REPLACE_WITH_YOUR_SECRET_KEY>',
    },
}

async function run() {
    const authResultHandler: HbWebSocketAuthResultHandler = async ({ success, msg, ws, service }) => {
        if (success) {
            service.sub('accounts.update#1') // subscribe to account updates after authentication success
        } else {
            console.error('auth error')
        }
    }

    const messageHandler: HbWebSocketMessageHandler = async ({ msg, ws, service }) => {
        // push event message
        if (msg.action == 'push') {
            if (msg.ch == 'accounts.update#1') {
                if (msg?.data?.changeType == 'deposit') {
                    // deposit event
                    console.log(`[${service.name}] deposit message`, { msg })
                } else if (msg?.data?.changeType == 'withdraw') {
                    // withdraw event
                    console.log(`[${service.name}] withdraw message`, { msg })
                } else if (msg?.data?.changeType == null) {
                    // initial push balance event
                    console.log(`[${service.name}] initial push balance message`, {
                        msg,
                    })
                } else if (msg?.data?.changeType == 'other') {
                    // other push
                    console.log(`[${service.name}] other push message`, { msg })
                } else {
                    // other ?
                    console.log(`[${service.name}] other misc push message`, { msg })
                }
            }
        }
        // other messages
        else {
            console.log(`[${service.name}] other message`, { msg })
        }
    }

    const hbWs = new HbWebSocket(options)
    hbWs.run()
}

run()
1.0.0

3 years ago