在 Tornado 的 WebSocketHandler 中,要向指定的客户端发送信息,你需要在连接集合中找到目标客户端,并使用 write_message()
方法向其发送消息。以下是一个示例,演示了如何向指定的客户端发送信息:
import tornado.ioloop
import tornado.web
import tornado.websocket
# WebSocketHandler 类处理 WebSocket 连接
class WebSocketHandler(tornado.websocket.WebSocketHandler):
connections = set()
# 当有新的 WebSocket 连接建立时,将连接添加到连接集合中
def open(self):
self.connections.add(self)
print("New WebSocket connection established")
# 当收到消息时,将消息发送给指定的客户端
def on_message(self, message):
print("Received message:", message)
# 在这里根据需要确定目标客户端,并向其发送消息
target_client = self.get_target_client() # 获取目标客户端
if target_client:
target_client.write_message(message) # 向目标客户端发送消息
# 当连接关闭时,将连接从连接集合中移除
def on_close(self):
self.connections.remove(self)
print("WebSocket connection closed")
# 获取目标客户端
def get_target_client(self):
# 这里是一个示例,假设目标客户端是 connections 集合中的第一个客户端
if self.connections:
return self.connections[0]
return None
# 创建应用程序并定义 WebSocket 路由
app = tornado.web.Application([
(r'/websocket', WebSocketHandler),
])
if __name__ == '__main__':
# 启动应用程序
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
在上面的示例中,我们在 on_message()
方法中根据需要确定目标客户端,并使用 write_message()
方法向其发送消息。在这个示例中,我们假设目标客户端是连接集合 connections
中的第一个客户端。你可以根据自己的逻辑来确定目标客户端,例如根据客户端的标识符、用户身份等。
请注意,在实际应用中,你可能需要维护一个客户端列表或字典来跟踪每个客户端的信息,并根据需要向指定的客户端发送消息。
上述示例仅演示了基本的向指定客户端发送消息的方法,你可以根据实际需求进行扩展和调整。