软件测试/测试开发/全日制 | 从Ajax到WebSocket:Python全栈开发中的前后端通信技巧
# 导入必要的模块
import json
from channels.generic.websocket import AsyncWebsocketConsumer
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
# 当WebSocket连接建立时调用
self.room_group_name = 'chat_room'
# 将用户加入到房间
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name
)
await self.accept()
async def disconnect(self, close_code):
# 当WebSocket连接断开时调用
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name
)
async def receive(self, text_data):
# 当接收到前端发送的消息时调用
text_data_json = json.loads(text_data)
message = text_data_json['message']
# 广播消息到房间内所有的用户
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message
}
)
async def chat_message(self, event):
# 处理群组消息
message = event['message']
# 发送消息到WebSocket
await self.send(text_data=json.dumps({
'message': message
}))
这个示例代码展示了如何使用Django Channels框架来创建一个简单的WebSocket聊天服务器端。它定义了一个ChatConsumer
类,用于处理WebSocket连接、断开连接和接收消息。当有新的消息发送到房间时,它会广播给该房间内的所有用户。这是一个典型的使用WebSocket进行实时通信的场景。
评论已关闭