用python的websocket库封装一个websocket服务端的class 不用异步
时间: 2023-10-18 07:09:05 浏览: 136
以下是一个简单的websocket服务端class的封装,使用Python的websocket库:
```python
import websocket
import threading
class WebsocketServer:
def __init__(self, host, port):
self.host = host
self.port = port
self.clients = []
self.server = websocket.WebSocketApp(
f"ws://{self.host}:{self.port}",
on_message=self.on_message,
on_open=self.on_open,
on_close=self.on_close
)
def start(self):
thread = threading.Thread(target=self.server.run_forever)
thread.daemon = True
thread.start()
def on_open(self, ws):
print("WebSocket connection opened.")
self.clients.append(ws)
def on_close(self, ws):
print("WebSocket connection closed.")
self.clients.remove(ws)
def on_message(self, ws, message):
print(f"Received message: {message}")
for client in self.clients:
client.send(message)
def send_message(self, message):
for client in self.clients:
client.send(message)
```
这个类有一个构造函数,初始化了host、port以及一个空的client列表。它使用websocket.WebSocketApp方法来创建一个websocket服务器,并设置on_message、on_open和on_close回调函数。
start方法创建一个新的线程来运行websocket服务器。
on_open、on_close和on_message方法处理连接、断开连接和接收消息的操作。当有新的连接时,它会将客户端添加到clients列表中,当连接关闭时,它会将客户端从clients列表中删除。当收到消息时,它会将消息发送给所有连接的客户端。
最后,send_message方法可以用来向所有连接的客户端发送消息。