在Flask-Socketio中处理多个外部源

时间:2020-07-15 20:34:16

标签: python-3.x redis flask-socketio

我对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也具有上述语法。

0 个答案:

没有答案