WebSocketServerHandler 示例
时间: 2023-11-01 21:06:47 浏览: 74
以下是一个使用Python Tornado库实现WebSocketServerHandler的示例:
```python
import tornado.websocket
import tornado.web
import tornado.ioloop
class WebSocketHandler(tornado.websocket.WebSocketHandler):
# 存储所有已连接的 WebSocket 实例
connected_clients = set()
def open(self):
print("WebSocket opened")
self.connected_clients.add(self)
def on_message(self, message):
print(f"Received message: {message}")
# 向所有已连接的 WebSocket 实例广播消息
for client in self.connected_clients:
client.write_message(message)
def on_close(self):
print("WebSocket closed")
self.connected_clients.remove(self)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
if __name__ == "__main__":
app = tornado.web.Application([
(r"/", MainHandler),
(r"/websocket", WebSocketHandler),
])
app.listen(8888)
print("Server started on http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
```
此示例创建了一个WebSocketHandler类,以处理所有WebSocket连接。它还定义了一个connected_clients集合,用于存储所有已连接的WebSocket实例。
在open()方法中,新的WebSocket实例被添加到connected_clients集合中。
在on_message()方法中,服务器接收到的消息被打印出来,并向所有已连接的客户端广播消息。
在on_close()方法中,客户端断开连接时,WebSocket实例从connected_clients集合中删除。
此示例还创建了一个MainHandler类,用于处理根路径请求,并渲染index.html模板。
最后,应用程序被监听在端口8888上,并在控制台上打印出启动消息。启动后,可以通过http://localhost:8888访问应用程序。
阅读全文