使用 Python 通过 WebSockets 访问 API

Posted

技术标签:

【中文标题】使用 Python 通过 WebSockets 访问 API【英文标题】:Accessing API via WebSockets using Python 【发布时间】:2016-01-30 18:33:18 【问题描述】:

业余爱好者在这里从事周末项目。

我希望访问此处提供的公开 API:https://api.coinsecure.in/ 它为我们提供了比特币交易数据——API 是通过我不熟悉的 websockets 实现的。

Websocket URI 是 wss://coinsecure.in/websocket 我想测试的方法是:“method”:“recentbuytrades”

我可以使用 Python 中的“websocket-client”访问 WebScocket API,如下所示:https://pypi.python.org/pypi/websocket-client/

但不幸的是,我无法弄清楚如何检索特定方法的数据 - "method": "recentbuytrades"

非常感谢您在提取此特定方法的数据方面提供的任何指导。

最好, 瑞恩

[编辑] 我正在使用的当前代码是这样的:

from websocket import create_connection
ws = create_connection("wss://coinsecure.in/websocket")
result =  ws.recv()
print ("Received '%s'" % result)
ws.close()

【问题讨论】:

你能贴出你目前用来连接websocket的代码吗? 我已经编辑了我的查询并添加了我当前使用的代码 只需执行 ws.send("method": "recentbuytrades") 并实现 on_message(...) 即可接收此消息的响应。他们必须展示一些例子。当然,ws 是一个 Connection 实例,所以看看你可以覆盖的方法。 tornado 还有一个干净的 websocket 客户端实现,以及其他有用的助手。因此,如果您想让生活变得轻松,请改用龙卷风。我都用过,但我更喜欢龙卷风来做这些事情。 哦,确定。以前从未使用过龙卷风。会试一试。感谢您的帮助:) 【参考方案1】:

试试这个:

from websocket import create_connection
ws = create_connection("wss://coinsecure.in/websocket")
ws.send('"method": "recentbuytrades"')

while True:
  result =  ws.recv()
  print ("Received '%s'" % result)

ws.close()

注意ws.send() 方法,它告诉API 你想要什么。接下来,while True 无限循环——WebSockets 是无限连接;信息通常不止一次地通过它们发送。你会从服务器(看起来像 JSON)这里得到一堆信息(一个“框架”),处理它,然后等待下一个信息。

看起来 API 会向您发送您不一定想要的数据。如果框架不包含 recentbuytrades 键,您可能需要将其丢弃。

【讨论】:

以上是关于使用 Python 通过 WebSockets 访问 API的主要内容,如果未能解决你的问题,请参考以下文章

通过 Websockets 从 Python Flask 服务器连续向客户端发送数据

Azure 认知服务 - 使用 python 和 websockets 自定义语音

将 JavaScript 通过 websockets 发送的最后一个字符剥离到 Python

Python websockets 服务器和 websockets 客户端在运行这两个任务时使用 asyncio 断言错误

Websockets - 尝试将 Python 代码转换为节点

是否可以在 Flask 和 Python 3 中使用 websockets?