#python-3.x #sockets #flask #websocket #flask-socketio
#python-3.x #сокеты #flask #веб-сокет #flask-socketio
Вопрос:
Я использую Flask websocket. и сервер websocket запущен в порту 5000
Это три разных клиента, прослушивающих сервер websocket на основе идентификатора клиента, я хочу отправлять разные сообщения разным клиентам.
В моем примере все клиенты websockets получают все сообщения. Пожалуйста, позвольте мне, есть ли какой-либо способ на основе идентификатора клиента, я хочу отправлять разные сообщения разным клиентам.
ws://127.0.0.1:5000/getMessage?clientId=C10
ws://127.0.0.1:5000/getMessage?clientId=C20
ws://127.0.0.1:5000/getMessage?clientId=C30
from geventwebsocket.exceptions import WebSocketError
from geventwebsocket.handler import WebSocketHandler
import gevent
from flask import Flask
from flask_sockets import Sockets
from gevent import pywsgi, Greenlet
from gevent.event import Event
if request.environ.get('wsgi.websocket'):
ws = request.environ['wsgi.websocket']
reqBody = request.args
event = Event()
ws_event.append((ws, event, None))
for ws, event, _ in ws_event:
try:
ws.send("Hello Message")
except WebSocketError as e:
event.set()
Ответ №1:
Одним из решений является добавление идентификатора клиента в ваши сообщения и заставить каждого клиента обрабатывать только сообщения, содержащие его идентификатор.
Например, вы можете добавлять к каждому сообщению идентификатор клиента, например, так "<clientId>:Hello Message"
. Сообщение для C10
становится "C10:Hello Message"
. Каждый клиент получит это сообщение, но C10
будет действовать только на нем.