web 聊天室支持多人在线聊天,某个人发了一条消息,在线的所有人都能实时看到。
tornado 自带的 demo 演示了如何实现一个 web 聊天室, 通过源码,我总结一下它设计方案。
服务器端
维护一个消息缓存,用来保存所有人发的消息。
维护一个等待队列,用来保存等待新消息的用户。
如下图所示:
(1) 添加消息
服务器把用户发送的消息加入消息缓存,同时唤醒等待队列中的用户,
告诉它们把最新的消息取走。
(2) 推送消息给用户
服务器与用户保持长连接,如果用户的 cursor 到达了消息缓存的末尾,说明
服务器暂时没有最新的消息,这时让用户一直等待,等待的过程中不关闭用户的连接。
如果服务器有最新的消息,则把用户 cursor 之后的消息一并发送给客户,
然后关闭用户的连接。
客户端
记住自己从服务器上获取了多少消息缓存,用 cursor 来标识。
使用 Ajax 发送消息, 使用 long polling 从服务器获取最新消息。
long polling 技术
客户端发起一次请求后立即挂起,一直到服务器端有更新的时候,
服务器才会主动推送信息到客户端。 在服务器端有更新并推送信息
过来之前这个周期内,客户端不会有新的多余的请求发生,服务器端
对此客户端也啥都不用干,只保留最基本的连接信息,一旦服务器有
更新将推送给客户端,客户端将相应的做出处理,处理完后再重新发起下一轮请求。
- 大小: 18.8 KB
分享到:
相关推荐
一个简单的web聊天室,适合初学 一个简单的web聊天室,适合初学
个人写的一个简易的web聊天室,在tomcat服务器上测试成功。使用AJAX技术异步刷新
web图片设计web图片设计web图片设计web图片设计web图片设计
web聊天室源码
web聊天室源码 支持单对单聊天 单对多聊天
完整的web聊天室程序,基于vs2005 sql2005编写,可以直接运行,适合初学者的学习借鉴。
web聊天室创建程序,适合初学者不太懂编程的人学习观看
eclipse运行的基于java的简易聊天室,可运行,含详细的演示视频和详细的技术文档说明,可以在此基础上自行修改。
F:\WeF:\Web\汪林林作品\简单聊天室.rarb \汪林林作品\简单聊 F:\Web\汪林林作品 \简单聊天室. rar天室.rar
Web聊天室系统,java开发,下载即可运行,对新手有很大帮助。
java web聊天室视频和源码 其他资源可以查看我的其他上传 20个项目之一
安装方便的简洁在线web聊天室,支持图文发送,兼容QQ内置,微信内置,pc等浏览器 无需服务端操作,php+mysql高效运行,无需第三方插件 高效+极快的运行速度 聊天室+bbs推送 多功能聊天室 支持一键粘贴网页图片发送 自定义...
这是一个基于 Gin 框架和 WebSocket 实现的简单聊天室应用程序。它使用了 MySQL 数据库保存用户信息和聊天记录,并使用 Gorilla WebSocket 库实现了 WebSocket 通信。 主要功能: * 用户注册和登录 * 用户通过 ...
基于servlet+struts2+ajax+mysql开发的web聊天室
asp实现web聊天室
基于JSP的Web聊天室的设计与实现 String email=""; boolean ismember=false;//varirable defination String name=request.getParameter("userid"); String code=request.getParameter("password"); ...
java web聊天室 jsp +servlet
利用jap里面的九大内置对象,service编写出来,是JavaEE,不错的基础开端
java web 聊天室 myeclipse web项目