数据在回调函数里面, 如何在receive里面将数据推送到前端?请看详情

来源:9-14 前端WebSocket API讲解

姬寅

2020-03-23

上次问题 老师给出了一个建议答案,已经明白! 但是数据不会取, 因为我获取数据是调用的SDK,SDK里面没有返回值 而是叫我们自己重写写一个 callback函数 然后接受 看图:

def callback(trade_event: ‘TradeEvent’):
print(trade_event)

async def connect(self):
    subscription_client.subscribe_24h_trade_statistics_event("btcusdt", callback, error_handler)
    await self.accept()

当前端与后端建立websocket的实话 会调用 connect 方法, 那么 我也就调用第三方的websocket连接,注意:
SDK ubscribe_24h_trade_statistics_event 是没有返回值的, 数据会进入 我自己重写的 callback 里面。

那么问题就是:

async def receive(self, text_data=None, bytes_data=None):
    while True:
        await asyncio.sleep(1)
        obj = ""
        await self.send_json(content=obj)

在我的前端和我的后端建立一个连接机会的时候, 我的obj 怎么才可以获取到 callback里面的值,因为callback里面的值是实时更新的…

问题就是 不会获取 callback 的值 赋值给 obj

写回答

1回答

Jack

2020-03-24

看得有一点懵,我想法是直接obj = callback(),因为在While True里面会每隔1s执行一次.

subscription_client.xxx为啥写在connect函数里面,应该是把“数据源→后端”,“后端→前端”的逻辑分开。

比特币的交易数据更新都很快,实现方式要改一下,中间至少用队列和redis缓存,不然交易所停机维护了你前端也变成空白了。

0
0

Django高级实战 开发企业级问答网站

融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目

900 学习 · 756 问题

查看课程