web-socket 客户端不会连接到 API

Posted

技术标签:

【中文标题】web-socket 客户端不会连接到 API【英文标题】:web-socket client will not connect to an API 【发布时间】:2021-11-14 04:36:21 【问题描述】:

在网上搜索了几个小时并在 Reddit 上提出同样的问题但没有成功后,我决定注册 Stack Overflow 并在这里提出问题。

我目前正在学习有关 API 的更多教程。该特定教程正在使用 Binance API 尝试每分钟收集一次有关 BTC 价格的数据(以美元计)。为此,我导入了 WebSocket-client 以保持稳定的连接并每分钟收集一次新数据点,但是每当我运行我的代码时,什么都没有发生。控制台打印“Process finished with exit code 0”,而不是实际连接到服务器并收集数据。

这是我的代码:

import websocket

SOCKET = "wss://stream.binance.com:9443/ws/btcusdt@kline_1m"

def on_open(ws):
    print('connection: successful')

def on_close(ws):
    print('connection: lost')

def on_message(ws, message):
    print('message')

ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message)
ws.run_forever()

起初,我以为我安装了错误的 WebSocket 库(而不是我以为我使用的 WebSocket-client。常规的 WebSocket 库)但是,我没有。然后我想可能是 PyCharm 有问题,所以我在 Visual Studio Code、Sublime Text、Terminal 和 Jupyter notebook 中运行了代码,但它们都没有工作。

我的代码有什么问题吗?我尝试了无数次编辑,但到目前为止都没有奏效。

币安 API 文档:https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-streams.md

我正在关注的教程:https://youtu.be/GdlFhF6gjKo?t=1112(去 18:32 左右查看他的代码)。

ps。我是一名新程序员,刚刚完成我的第一个项目(a* 寻路算法),所以不要太苛刻:)。

【问题讨论】:

如果您添加 on_error 回调,我怀疑您会看到:- [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 这是真的。下面的答案概述了如何解决这个问题,但我仍然不太明白什么是 ssl 证书或它为什么重要...... 【参考方案1】:

假设这是普遍存在的 SSL 错误,然后执行以下操作:-

import websocket
import ssl

SOCKET = "wss://stream.binance.com:9443/ws/btcusdt@kline_1m"


def on_open(ws):
    print('connection: successful')

def on_close(ws, *args):
    print('connection: lost')

def on_message(ws, message):
    print('message')

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

ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message, on_error=on_error)
ws.run_forever(sslopt="cert_reqs": ssl.CERT_NONE)

【讨论】:

这成功了!太感谢了。你介意解释一下什么是 SSL 错误,以及 ssl 库是如何解决这个问题的吗? - 谢谢:) 感谢您的笑声,以及您提供的解决方案。我现在要谷歌了。

以上是关于web-socket 客户端不会连接到 API的主要内容,如果未能解决你的问题,请参考以下文章

设计/架构:web-socket 单连接 vs 多连接

无法连接到 Google API 客户端

无法连接到 Google API 客户端?

Hbase 客户端 API 未连接到 Hbase

无法连接到 Google API 客户端、GooglePlayServices

连接到 Google API 客户端时出现问题