V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zoofy  ›  全部回复第 2 页 / 共 2 页
回复总数  23
1  2  
2022 年 7 月 14 日
回复了 zhishixiang 创建的主题 Python flask socketio 无法向客户端推送消息
@zhishixiang 你的 namespace 跟 sid 要和客户端相同的,所以在连接的时候获取到的 sid 传送给服务端,记录好,test 接口才能发信息给客户端。不能在服务端获取啊
2022 年 7 月 14 日
回复了 zhishixiang 创建的主题 Python flask socketio 无法向客户端推送消息
给你贴个可以运行的代码
``` 服务端
from flask import Flask
from flask_socketio import SocketIO, emit, join_room
from loguru import logger

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
tokenList = {}


@app.route("/test")
def testConnect():
sid = tokenList["114514"]
data = {'from': 'server'}
# socketio.emit('newMission', data, namespace='/mission')
socketio.emit('newMission', data, to=sid, namespace='/mission')
return 'success'


@socketio.on('register')
def register(data):
sid = data['sid']
print("服务器%s 尝试注册" % data["secret"])
emit('register', {"token": sid})
logger.debug("注册成功,token 为%s" % sid)
join_room(sid)
tokenList["114514"] = sid


@socketio.on('message', namespace='/mission')
def message(data):
print(data) # {'from': 'client'}
# emit('response', {'from': 'server'})
# sleep(5)
# emit('response', "exit")


if __name__ == '__main__':
socketio.run(app, debug=True, host='127.0.0.1', port=8090)
```

``` 客户端
import socketio

sio = socketio.Client()


@sio.on('connect')
def on_connect():
print('正在注册,请稍后')
# 获取 namespace sid, 发送给 server
sid = sio.get_sid('/mission')
sio.emit('register', {'secret': '114514', 'sid': sid})


@sio.on('register')
def isReg(data):
print("receiver message from register ,当前 token 为", data['token'])
pass


@sio.on("newMission", namespace='/mission')
def newMission(data):
print("get mission message data: ", data)


sio.connect('ws://localhost:8090')
sio.wait()
```

主要是获取到 namespace 后,把 namespace sid join room, 记录好 sid. 要 emit 的时候, 加上 namespace 和 roomId(sid)进行发送
2022 年 7 月 14 日
回复了 u2gign 创建的主题 Python 如何在 celery 异步 task 执行中拿到里面的返回值
看代码感觉是用 django, 可以看下 django-celery-results
1  2  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3141 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 00:25 · PVG 08:25 · LAX 17:25 · JFK 20:25
♥ Do have faith in what you're doing.