基于Python的多人在线聊天程序
项目简介
本项目的选题为项目六:聊天程序,具体项目任务如下所示:
经过开发,本项目最终实现了项目任务 2. 的大体功能,实现了多用户之间的在线聊天室。
项目分析
本项目采用 Django 框架,后端以 Python 为语言搭建 Web 界面作为聊天室的载体。通过借助Django的channels插件,在Django框架中实现基于Websocket 协议的数据传输,实现项目要求的具体任务。
实例展示
进入本地虚拟环境,启动 Django 服务器:
访问 进入项目主页面:
在输入框内输入聊天室名称“test”,进入名为 test 的聊天室:
新开两个网页,分别进入”test”和“anothertest”两个聊天室。在聊天室中发送内容“Hello world!”,检查不同聊天室的收到情况:
可以看到,处在同一聊天室的两个客户端实现了在线聊天,处在不同聊天室的客户端之间无法进行在线聊天。
项目目录:
核心代码: consumers.py: 负责处理通过 websocket 路由转发过来的请求和数据,类似于
“views.py”的功能。
```python import json from asgiref.sync import async_to_sync from channels.generic.websocket import WebsocketConsumer import datetime class ChatConsumer(WebsocketConsumer): def connect(self): self.room_name = self.scope['url_route']['kwargs']['room_name'] self.room_group_name = 'chat_%s' % self.room_name async_to_sync(self.channel_layer.group_add)( self.room_group_name, self.channel_name ) self.accept() def disconnect(self, close_code): async_to_sync(self.channel_layer.group_discard)( self.room_group_name, self.channel_name ) def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json['message'] async_to_sync(self.channel_layer.group_send)( self.room_group_name, { 'type': 'chat_message', 'message': message } ) def chat_message(self, event): message = event['message'] datetime_str = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') self.send(text_data=json.dumps({ 'message': f'{datetime_str}:{message}' }))
```
room.html:前端关于即时通信的实现。
```python
{%load static%}
在线聊天室 By SJZ
{{ room_name|json_script:"room-name" }}
参考文献
- 基于android系统的即时通讯系统设计与实现(山东大学·杜辽)
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 企业级即时通讯系统设计与实现(华南理工大学·余春贵)
- JSP绘图聊天室系统设计与实现(四川大学·肖兰)
- 基于Python Web的运动社交微信小程序(大连理工大学·赵兴东)
- “Things-Cloud-People”:一个“Web of Things”实现方案(华东师范大学·汤承刚)
- 企业内部即时通讯系统的设计与实现(内蒙古大学·王慧平)
- 基于.NET自定义控件的社区网站系统研究与实现(武汉理工大学·刘亚)
- 基于JSP的网上聊天室系统的设计与实现(电子科技大学·任飞)
- 基于SSH的大学生联谊交友管理系统设计与实现(华中科技大学·王海波)
- 多媒体通讯平台构建及应用研究(大连海事大学·曲智)
- 企业级即时通讯系统设计与实现(华南理工大学·余春贵)
- 基于Web浏览器的实时答疑系统的设计与实现(华中科技大学·李亚星)
- 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊)
- 基于JSP的网上聊天室系统的设计与实现(电子科技大学·任飞)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设港湾 ,原文地址:https://bishedaima.com/yuanma/36173.html