websocket

该代码示例展示了如何使用Python的websocket库建立与testnet-chain-messages.functionx.io的WebSocket连接,订阅并处理`proposal:fxcore`主题的数据。当收到消息时,程序将解析JSON数据并打印。此外,代码还处理了错误和连接关闭的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

websocket

testnet wss://testnet-chain-messages.functionx.io
心跳60秒,累计大于等于3次未收到心跳服务器关闭客户端连接

{
  "type": "subscribe",           // subscribe or unsubscribe
  "topic": "proposal:fxcore",    // fxcore
  "lastId": "7335908"            // 从那个快开始补数据(注意只缓存了5分钟)
}
import time

import websocket
import json
import ssl
import os

os.environ["http_proxy"] = "http://127.0.0.1:7890"
os.environ["https_proxy"] = "http://127.0.0.1:7890"


class WebSocketClient:
    def __init__(self, url, subscribe_data, on_message):
        self.url = url
        self.subscribe_data = subscribe_data
        self.error = None
        self.close_status = None
        self.message = on_message

    def on_error(self, ws, error):
        self.error = error

    def on_close(self, ws, close_status, ):
        self.close_status = close_status

    def on_open(self, ws):
        ws.send(json.dumps(self.subscribe_data))

    def on_message(self, ws, message):
        self.message = message

    def websocket(self, ws):
        lists = []
        while (1):
            try:
                ws = websocket.create_connection(self.url, sslopt={"cert_reqs": ssl.CERT_NONE},
                                                 on_message=self.on_message,
                                                 on_error=self.on_error,
                                                 on_close=self.on_close)
                # 消息头
                ws.send(json.dumps(self.subscribe_data))
                # 发送消息头  消息头发送一次即可 。server会在数据有变化情况下主动返回
                while (1):
                    message = ws.recv()

                    result = json.loads(message)
                    print("result:%s" % result)
                    print("------------------------------------------")
                    if 'data' in result:
                        if self.message + 1 == result['data']['height']:
                            # print('ss',result)
                            lists.append(message)
                            # ws.close()
            except Exception as e:
                print(e)
                break
        return lists

import json

from testcase.websocket.websocket_app import WebSocketClient

def subscribe_data(lastId):
    # 测试subscribe_data中3个字段正常传值的情况
    url = "wss://testnet-chain-messages.functionx.io"
    subscribe_data = {
        "type": "subscribe",
        "topic": "proposal:fxcore",
        "lastId": str(lastId)
    }
    print(subscribe_data)
    # 创建WebSocketClient实例
    client = WebSocketClient(url, subscribe_data, on_message=lastId)

    message = client.websocket(ws=client)
    return message


s = subscribe_data(9170501-1)
data = json.loads(s)
print("data:",data)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值