Flask Websocket向特定客户端发送消息

问题描述

我正在使用Flask websocket。并且websocket服务器在端口5000中运行

这是三个监听Websocket服务器的不同客户端 基于客户端ID,我想向不同的客户端发送不同的消息。

在我的上面,所有weebsockets客户都收到所有消息。 请让我有什么办法基于客户端ID,我想向不同的客户端发送不同的消息。

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,_ in ws_event:
    try:
        ws.send("Hello Message")
    except WebSocketError as e:
        event.set()

解决方法

一种解决方案是将客户端的ID添加到您的邮件中,并使每个客户端仅处理包含其ID的邮件。

例如,您可以在每个消息之前添加一个"<clientId>:Hello Message"这样的客户端ID。 C10的消息变为"C10:Hello Message"。每个客户端都会收到此消息,但只有C10会对此进行操作。