请稍候,加载中....

在线聊天室

项目要求:

  1. 提供用户注册、登陆、退出功能
  2. 用户登陆后可以进入聊天室页面
  3. 在聊天室页面显示所有当前登陆在线用户列表
  4. 如果用户退出登陆,则从在线用户列表中删除该用户
  5. 点击某个用户名,可以对该用户发消息
  6. 如果未指定消息接受对象,则表示对所有人发送消息
  7. 刷新聊天室信息

聊天室界面

技术分析:

1. 用户在线列表的实现
这里的在线列表并不是你的用户表数据,而是需要新建一张表,每当用户登陆之后,添加一条用户登陆信息:用户名、登陆ip、登陆时间、刷新时间(当刷新页面或者请求时,更新该时间,表示用户处于活动状态)

2. 用户退出处理
当用户退出后,将用户从在线列表删除,这里不要删除用户表数据

3. 用户直接关闭网页或者长时间未活动
由于用户并没有按照预想的方式退出,http又是一种无状态协议,所以可以运行一个用户在线检测程序,如果用户的刷新时间超过一定的时长,则认为用户下线

4.点击用户发送数据
这里需要通过js实现,可以在用户列表的每个用户名节点上使用自定义data属性上绑定用户数据,点击后获得该数据

5. 发送消息
这里选择使用ajax无刷新发送,如果用表单发送数据,就会发现体验很差,表单提交造成每次都会整个页面刷新

6. 聊天信息列表
通过ajax,每隔一段时间拉取最新的聊天信息,并显示在聊天窗口区域

这里如何保证每次拉取的是最新的聊天信息,可以使用聊天记录id,每次拉取都是从上一次的最后一条聊天记录last_id开始,也就是sql查询条件 id> last_id

拉取的信息添加到聊天列表,需要通过js控制滚动条拉到最底部


Python学习手册-