【问题标题】:Can't connect to Cryptocompare's Websocket and emit requests无法连接到 Cryptocompare 的 Websocket 并发出请求
【发布时间】:2023-03-27 04:15:01
【问题描述】:

我一直在尝试连接到Cryptocompare's WebSocket:wss://streamer.cryptocompare.com/socket.io/?transport=websocket

我需要连接到这个 WebSocket 来接收实时价格。我尝试了以下方法

1。使用 websocket-client

import websocket as ws  
socket = ws.create_connection('wss://streamer.cryptocompare.com/socket.io/?transport=websocket', timeout = 10) 
socket.connected 

这会返回 True

这种方法将我连接到 cryptocompare 的 websocket,但不允许我发送消息。根据 Cryptocompare 的 API 指南,我使用了:

socket.send('SubAdd',{'subs': ['0~Poloniex~BTC~USD']})

上面的代码返回这个错误:

ValueError: Invalid OPCODE

与 API 中给出的相同的 Javascript 代码是:

socket.emit('SubAdd', { subs: ['0~Poloniex~BTC~USD'] } );

我不明白我做错了什么

2。使用 socketIO-client

from requests.exceptions import ConnectionError
from socketIO_client import SocketIO

try:
    socket = SocketIO('wss://streamer.cryptocompare.com/socket.io/?transport=websocket', wait_for_connection=False)
    socket.wait()
except ConnectionError:
    print('The server is down. Try again later.')

这给出了以下输出:

ConnectionError: HTTPConnectionPool(host='wss', port=80): Max retries exceeded with url: //streamer.cryptocompare.com/socket.io/transport=websocket/socket.io/?EIO=3&transport=polling&t=1512683258219-0 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7fbd0c273400>: Failed to establish a new connection: [Errno -2] Name or service not known',))

感谢有关此问题的任何帮助

【问题讨论】:

    标签: python-3.x socket.io


    【解决方案1】:

    奇怪的是,我遇到了同样的问题。 emit 由 socket.io 提供,而本机 Websocket 实现没有实现这一点。基本上你缺少的是你需要在设置订阅之前调用发射。

    from requests.exceptions import ConnectionError
    from socketIO_client import SocketIO
    
    try:
        socket = SocketIO('wss://streamer.cryptocompare.com/socket.io/?transport=websocket', wait_for_connection=False)
        socket.emit('SubAdd', { subs: ['0~Poloniex~BTC~USD'] });
        socket.wait()
    except ConnectionError:
        print('The server is down. Try again later.')
    

    如果有帮助,这里是一个使用 Angular 的工作要点https://gist.github.com/jessemlay/ac856ebe015f408263df9a28787adf6f

    【讨论】:

    • 上面的代码还是报错。我已经尝试过了,但我一直有连接错误。
    猜你喜欢
    • 2018-03-19
    • 2015-11-10
    • 2018-03-16
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多