以python实现利用websocket和json实现通讯
时间: 2024-03-11 17:48:58 浏览: 214
要在 Python 中使用 WebSocket 和 JSON 实现通讯,可以使用 `websocket` 库和 `json` 库。
下面是一个简单的示例代码,其中使用了 Python 的 `websocket` 库实现了 WebSocket 的服务端,同时使用了 `json` 库将消息转换为 JSON 格式进行传输:
```
import json
import websocket
def on_message(ws, message):
# 将收到的消息解析为 JSON
data = json.loads(message)
# 处理消息
if data['type'] == 'hello':
print('收到 Hello 消息')
elif data['type'] == 'goodbye':
print('收到 Goodbye 消息')
def on_error(ws, error):
print(error)
def on_close(ws):
print('连接关闭')
def on_open(ws):
print('连接成功')
# 发送消息
message = {
'type': 'hello',
'message': 'Hello, World!'
}
ws.send(json.dumps(message))
if __name__ == '__main__':
# 连接 WebSocket 服务端
ws = websocket.WebSocketApp('ws://localhost:8080/',
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
```
在上面的代码中,首先使用 `json` 库将消息转换为 JSON 格式进行传输,然后使用 `websocket` 库创建了一个 WebSocket 的客户端并连接到了服务端。在连接成功后,客户端会发送一个 `hello` 消息,并且在收到服务端发送的消息时,会将消息解析为 JSON 并进行相应的处理。
如果要实现 WebSocket 的服务端,则可以使用类似下面的代码:
```
import json
import websocket_server
def on_message(client, server, message):
# 将收到的消息解析为 JSON
data = json.loads(message)
# 处理消息
if data['type'] == 'hello':
print('收到 Hello 消息')
# 回复消息
reply = {
'type': 'reply',
'message': 'Hello, Client!'
}
server.send_message(client, json.dumps(reply))
elif data['type'] == 'goodbye':
print('收到 Goodbye 消息')
# 关闭连接
server.close_connection(client)
if __name__ == '__main__':
# 创建 WebSocket 服务端
server = websocket_server.WebsocketServer(8080)
server.set_fn_message_received(on_message)
server.run_forever()
```
在上面的代码中,首先使用 `json` 库将消息转换为 JSON 格式进行传输,然后使用 `websocket_server` 库创建了一个 WebSocket 的服务端并监听在 8080 端口。在收到客户端发送的消息时,服务端会将消息解析为 JSON 并进行相应的处理。如果收到了 `hello` 消息,则会回复一个 `reply` 消息;如果收到了 `goodbye` 消息,则会关闭连接。
阅读全文