订阅 bitFlyer WebSocket

Posted

技术标签:

【中文标题】订阅 bitFlyer WebSocket【英文标题】:Subscribe to bitFlyer WebSocket 【发布时间】:2018-04-28 13:45:20 【问题描述】:

我已经建立了与多个加密货币交易所的 websocket 连接,但我在连接到 bitFlyer 时遇到了困难。

我的代码如下:

import websocket
import json

def on_message(ws, message):
    msg = json.loads(message)
    print(msg)

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")

def on_open(ws):
    ws.send(json.dumps("method":"subscribe", "channel":"lightning_executions_FX_BTC_JPY"))

while True:   
    if __name__ == "__main__":
        #websocket.enableTrace(True)
        ws = websocket.WebSocketApp("wss://ws.lightstream.bitflyer.com/json-rpc",
                                    on_message=on_message,
                                    on_error=on_error,
                                    on_close=on_close)
        ws.on_open = on_open
        ws.run_forever()

我已经尝试了我的 on_open() 消息的许多变体,大多数都导致 ### closed ### Invalid close opcode. 错误。

不幸的是,他们的文档不包含位于 HERE 的 Python 示例。

非常感谢您在发送正确消息方面的任何帮助。

【问题讨论】:

【参考方案1】:

我认为您发送的消息格式错误,请查看https://lightning.bitflyer.jp/docs/playgroundrealtime的以下参考,猜测会解决。

# pip install websocket-client
import websocket
import json
CHANNEL = "lightning_board_snapshot_<productCode>"

def on_message(ws, message):
    message = json.loads(message)
    if message["method"] == "channelMessage":
        print(" ".format(message["params"]["channel"], message["params"]["message"]))

def on_open(ws):
    ws.send(json.dumps("method": "subscribe", "params": "channel": CHANNEL))

if __name__ == "__main__":
    // note: reconnection handling needed.
    ws = websocket.WebSocketApp("wss://ws.lightstream.bitflyer.com/json-rpc",
                              on_message = on_message, on_open = on_open)
    ws.run_forever()

【讨论】:

以上是关于订阅 bitFlyer WebSocket的主要内容,如果未能解决你的问题,请参考以下文章

RedisRedis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

EventBus手写实现事件通信框架 ( 订阅类-订阅方法缓存集合 | 事件类型-订阅者集合 | 订阅对象-事件类型集合 )

Redis 发布订阅功能

EventBusEventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )

订阅号如何获取?

取消 iOS 订阅