Den*_*ene 6 python flask bitcoin flask-socketio
我要实现以下情形:
我正在使用Blocktrail API中的webhook来“监听”事件,即接收地址上的硬币。
现在,当事件发生时,API会对我的URL进行POST。这应该向通过socket.io连接到我的服务器的浏览器发送一条消息(例如“在区块链上看到付款”)
所以问题是
我如何使用flask-socketio将消息从路由发送到套接字
伪代码:
@app.route('/callback/<address>')
def callback(id):
socketio.send('payment seen on blockchain')
@socketio.on('address',address)
def socketlisten(address):
registerCallback(address)
Run Code Online (Sandbox Code Playgroud)
我将描述如何使用Flask-SocketIO beta版本1.0b1解决此问题。您也可以使用0.6版本来做到这一点,但是它有点复杂,1.0版本使寻址单个客户端更加容易。
套接字连接的每个客户端都被分配了一个唯一标识它的会话ID,即所谓的sid。在套接字函数处理程序中,您可以按进行访问request.sid。同样,在连接时,每个客户端都分配到一个以会话ID命名的私人房间。
我假设您通过回调收到的元数据可以识别用户。您需要获取该sid用户的。收到警报后,可以将警报发送到相应的房间。
示例(与如何将a附加sid到地址有关的一些挥霍之手):
@app.route('/callback/<address>')
def callback(address):
sid = get_sid_from_address(address)
socketio.send('payment seen on blockchain', room=sid)
@socketio.on('address')
def socketlisten(address):
associate_address_with_sid(address, request.sid)
Run Code Online (Sandbox Code Playgroud)