【发布时间】:2015-09-22 16:35:23
【问题描述】:
这是我的代码:
class FirstNamespace(BaseNamespace):
def on_some_event(self, msg):
self.emit('ok '+msg)
@app.route('/socket.io/<path:remaining>') # socket.io endpoint
def socketio_withpath(remaining):
socketio_manage(request.environ,
{'/channel1': FirstNamespace}
return 'ok'
@app.route('/dosomething/', methods=['POST']) # simple http endpoint
def dosomething():
data = request.form
# ...
# some code that triggers self.emit from within FirstNamespace
# ...
return 'data processed'
我可以愉快地从前端发送套接字消息,它们得到处理,我收到来自on_some_event 方法的回复。
问题是,如果我自己先发送一条消息,我只能收到一条消息。
但是我怎样才能在不第一个说话的情况下开始接收消息呢?
例如,如果有人向 /dosomething/ 端点发送 POST,它如何触发 emit 到我的客户端 websocket?
--
我可以在flask-socketio 中做到这一点,但它对我的口味来说太神奇了。是否有更低级别的实现?
【问题讨论】:
-
不明白这个问题。您可以随时使用
self.emit('response_channel', msg)发送消息。 -
@Daniel 是的,但假设您有另一个端点,例如
localhost:8080/dosomething。假设你想在那里发布一个常规的 POST,并且你希望它触发一个emit到一个 websocket。你是怎么做的? -
请编辑您的问题,明确您想要达到的目标。
-
@Daniel 已编辑,谢谢。
标签: python socket.io gevent gevent-socketio