在我的客户端上,我有dataJson,我想通过socketio将其发送到服务器。在服务器端,我希望此dataJson可以在app.route下接收并返回,以便在网络上显示。
服务器端代码:
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#'
socketio = SocketIO(app)
@app.route('/')
def sessions():
print(dataJson)
return dataJson
@socketio.on('my event')
def handle_my_custom_event(json):
global dataJson
dataJson = json
print('received json: ' + str(json))
if __name__ == '__main__':
socketio.run(app, debug=True, host='127.0.0.1')
客户端代码:
from socketIO_client import SocketIO
import json
dataJson = {'xxx': 'yyy'}
with SocketIO('localhost', 5000) as socketIO:
json = json.dumps(dataJson)
socketIO.emit(json)
print(json)
还是有其他方法可以实现我的目标? 谢谢!
答案 0 :(得分:0)
不确定这是否是代码的唯一问题,但是客户端emit
调用缺少事件名称。应该是这样的:
socketIO.emit('my event', json)
还要注意,您正在使用名为json
的变量,该变量将遮盖json
包。将其更改为其他名称,以避免难以捕获的错误。
最后,我可能建议您使用python-socketio包中的Socket.IO客户端,而不要使用您使用的客户端。 python-socketio软件包包括服务器和客户端。服务器是您作为Flask-SocketIO扩展的一部分使用的服务器,因此您将使用由同一个人(即我,所以我有偏见)编写的服务器和客户端。