我对Flask很陌生。我正在Flask-socketio中编写一个小应用程序。我有3种不同的json供稿。我已经使用pip安装了redis,并使用apt安装了服务器。服务正在运行。现在,解决问题。说3个用户中的每个用户都可以选择其供稿。示例:用户1可以具有feed1和feed2,用户2具有feed3,用户3具有feed1。我不知道如何将这些用户路由到所需的房间。我能够获得以下一种来源的回应。我一直到这里。任何帮助将不胜感激。
Server.py:
import eventlet
eventlet.monkey_patch()
from flask import Flask, render_template, request
from flask_socketio import SocketIO
from flask_socketio import send, emit
from flask_socketio import join_room, leave_room
app = Flask(__name__)
socketio = SocketIO(app, message_queue='redis://')
@socketio.on("connect")
def connect():
print("Connected")
emit('status', {'status': 'Connected'})
@socketio.on('disconnect')
def disconnect():
print('Client disconnected')
@socketio.on_error()
def error_handler(e):
print("Error")
@socketio.on("join")
def on_join(data):
room = data['room']
print("Joined room", room)
join_room(room)
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0')
客户:
import socketio
sio = socketio.Client()
@sio.on("status")
def status(data):
print(data['status'])
@sio.on('connect')
def connect():
print("I'm connected!")
@sio.event
def connect_error():
print("The connection failed!")
@sio.event
def disconnect():
print("I'm disconnected!")
@sio.on("json_response")
def getJSON(data):
print(data)
sio.connect('http://localhost:5000')
sio.emit("join", {'room': 'chat1'})
外部来源: 一个.py:
socketio = SocketIO(message_queue='redis://')
## get the data from DB and convert to json
socketio.emit("json_response", {'payload': jsonStr})
two.py和three具有相同的用法:
socketio = SocketIO(message_queue='redis://')
## get the data from DB and convert to json
socketio.emit("json_response2", {'payload': jsonStr})
three.py也具有上述语法。