基于comet服务器推送技术(web实时聊天)
2013-04-04 19:21
441 查看
Comet 也称反向 Ajax 或服务器端推技术.其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。
主要思想:服务器端将数据推送到客户端(浏览器)
本人做了简单的web实时聊天系统:服务器推送(聊天).zip
系统简单说明如下:
{
系统所用数据库:sqlite数据库 UserInfo:用户信息表 UserRelation:用户关系表 MessageInfo:聊天信息表 开发结构: 结构图:
![](http://images.cnitblog.com/blog/451346/201303/31001200-58be99828e7748d68769d6122267dfd7.png)
三层开发: 数据层--与sqlite数据库之间的交互 逻辑层--数据转换 实体层--数据对象 Web服务:利用WebService对外提供公共的接口,主要提供客户端与服务器端数据之间的交互。
客户端(asp.net):利用comet中ajax反向技术推送聊天信息。 项目操作演示效果: 1.用户登录(测试账户{liger_zql,12345},{漠然,12345}) 说明:用浏览器开启两个选项卡浏览Login.aspx页面分别如下
![](http://images.cnitblog.com/blog/451346/201303/30235720-a6299acc415d4a4986d937b6664cc88e.png)
![](http://images.cnitblog.com/blog/451346/201303/30235943-4ad28c606b1a4ef084c16072e608c3ff.png)
2.聊天界面 登录成功后,两选项卡分别跳转到如下界面:双击在线好友中的行,则可开始进行聊天。 liger_zql聊天界面:
![](http://images.cnitblog.com/blog/451346/201303/31000322-6e53369502a6486aba0e0f3052a72eaa.png)
漠然聊天界面:
![](http://images.cnitblog.com/blog/451346/201303/31000456-09b4ec7861ae4e27b8cf258e1850dbf7.png)
其中聊天过程是使用了comet推送技术。 3.用户注册界面
![](http://images.cnitblog.com/blog/451346/201303/31001837-4b8893ee6c2c436e84ce836355fccadc.png)
}
项目中comet推送技术
客户端
Comet的一大优点是,每个客户端始终都有一个向服务器端打开的通信链路。服务器端可以通过在事件到来时立即提交(完成)响应来把事件推给客户端,或者它甚至可以累积再连续发送。因为请求长时间保持打开的状态,故服务器端需要特别的功能来处理所有的这些长生存期请求。
源码:服务器推送(聊天).zip
最后预祝有需要了解该技术的程序猿天天向上!!!(~ o ~)~zZ
主要思想:服务器端将数据推送到客户端(浏览器)
本人做了简单的web实时聊天系统:服务器推送(聊天).zip
系统简单说明如下:
{
系统所用数据库:sqlite数据库 UserInfo:用户信息表 UserRelation:用户关系表 MessageInfo:聊天信息表 开发结构: 结构图:
![](http://images.cnitblog.com/blog/451346/201303/31001200-58be99828e7748d68769d6122267dfd7.png)
三层开发: 数据层--与sqlite数据库之间的交互 逻辑层--数据转换 实体层--数据对象 Web服务:利用WebService对外提供公共的接口,主要提供客户端与服务器端数据之间的交互。
客户端(asp.net):利用comet中ajax反向技术推送聊天信息。 项目操作演示效果: 1.用户登录(测试账户{liger_zql,12345},{漠然,12345}) 说明:用浏览器开启两个选项卡浏览Login.aspx页面分别如下
![](http://images.cnitblog.com/blog/451346/201303/30235720-a6299acc415d4a4986d937b6664cc88e.png)
![](http://images.cnitblog.com/blog/451346/201303/30235943-4ad28c606b1a4ef084c16072e608c3ff.png)
2.聊天界面 登录成功后,两选项卡分别跳转到如下界面:双击在线好友中的行,则可开始进行聊天。 liger_zql聊天界面:
![](http://images.cnitblog.com/blog/451346/201303/31000322-6e53369502a6486aba0e0f3052a72eaa.png)
漠然聊天界面:
![](http://images.cnitblog.com/blog/451346/201303/31000456-09b4ec7861ae4e27b8cf258e1850dbf7.png)
其中聊天过程是使用了comet推送技术。 3.用户注册界面
![](http://images.cnitblog.com/blog/451346/201303/31001837-4b8893ee6c2c436e84ce836355fccadc.png)
}
项目中comet推送技术
客户端
//ajax长轮询 function PostSubmit(params, success) { $.post("comet_broadcast.asyn", params, success, "json"); } function Keepline() { var array = new PHPArray("Keepline"); var success = function (data, status) { if (data.ResponseStatus == 1) { ShowMessage(data.ResponseData, "recive"); } Keepline(); } PostSubmit(array.ToJson(), success); }服务器端:
#region 发送消息 private void SendMsg() { MessageInfo message = new MessageInfo() { SendUserId = m_Context.Request["UserId"], ReciveUserId = m_Context.Request["ReciveUserId"], Content = m_Context.Request["Content"] }; //获取服务器端处理结果 string result = sdk.Send_Msg(message); if (dict.ContainsKey(message.ReciveUserId)) { //向对发送信息 dict[message.ReciveUserId].Result = result; dict[message.ReciveUserId].Send(); } //向自己发送处理结果 _IAsyncResult.Result = result; _IAsyncResult.Send(); } #endregion其中(项目网站--WebChat_ServerPush和服务器端处理--ServerPushHttpHandler)需要在Web.config配置文件中做出如下配置:
<httpHandlers> <!--comet长连接配置字节--> <add verb="*" path="comet_broadcast.asyn" type="ServerPushHttpHandler.ServerPush,ServerPushHttpHandler"/> </httpHandlers>Comet是一个web应用模型,在该模型中,请求被发送到服务器端并保持一个很长的存活期,直到超时或是有服务器端事件发生。在该请求完成后,另一个长生存期的Ajax请求就被送去等待另一个服务器端事件。使用Comet的话,web服务器就可以在无需显式请求的情况下向客户端发送数据。
Comet的一大优点是,每个客户端始终都有一个向服务器端打开的通信链路。服务器端可以通过在事件到来时立即提交(完成)响应来把事件推给客户端,或者它甚至可以累积再连续发送。因为请求长时间保持打开的状态,故服务器端需要特别的功能来处理所有的这些长生存期请求。
源码:服务器推送(聊天).zip
最后预祝有需要了解该技术的程序猿天天向上!!!(~ o ~)~zZ
作者:曾庆雷 出处:http://www.cnblogs.com/zengqinglei 本页版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
相关文章推荐
- 基于comet服务器推送技术(web实时聊天)
- 基于comet服务器推送技术(web实时聊天)
- 基于comet服务器推送技术(web实时聊天)
- 基于comet服务器推送技术(web实时聊天)
- .NET基于comet服务器推送技术(web实时聊天)
- Python Web实时消息后台服务器推送技术---GoEasy
- C语言 Web实时消息后台服务器推送技术---GoEasy
- ASP.NET Web实时消息后台服务器推送技术-GoEasy
- JAVA Web实时消息后台服务器推送技术---GoEasy
- C(++) Web实时消息后台服务器推送技术---GoEasy
- C++ Web实时消息后台服务器推送技术-GoEasy
- C++ Web实时消息后台服务器推送技术---GoEasy
- PHP Web实时消息后台服务器推送技术----GoEasy
- 发一个WebSocket+PHP聊天室-PHP多进程实时服务器推送技术
- 基于comet的实时web应用:长轮询和服务器端推送
- PHP Web实时消息后台服务器推送技术--GoEasy
- WEB实时聊天 comet推技术
- PHP Web实时消息后台服务器推送技术---GoEasy
- 用COMET技术实现WEB实时推送应用(转)
- java web 服务器推送技术--comet4j