日期:2014-05-17 浏览次数:20533 次
?
?
前段时间小接触了一下comet,关于其基本原理和代码示例请参考我之前的博文《与comet的一次亲密接触——基于ajax的http的长连接技术》
?
这次我们稍微系统的实现一个由PHP Web 服务器端向一个C#客户端应用程序推送的示例。实现“推送”、“用户状态”、“用户列表”的功能。具体一些代码细节就不详细介绍了,主要拿出几个关键问题来与大家分享和讨论。
?
本文不讨论复杂的comet框架,只从最基本的ajax长连接实现层面来构建应用。若有兴趣研究pushlet等comet框架的朋友请自行研究。
?
1.? 数据传输流程。
应用程序 -> 内嵌webbrowser -> javascript -> ajax后台 -> Web服务器抓住请求 -> Web服务放开请求并附带数据 -> json数据流 -> javascript -> 应用程序
?
使用C#内嵌的一个WebBrowser 访问一个页面来启动我们的长连接。(因为我不想与平台进行太多的绑定,所以尽量把所有的数据传输层全部放在WEB上来做,下同,不再解释。)
Web服务器收到后抓住请求,直到需要推送数据,则放开属于该客户端的请求。打成json发回,然后javascript回调C#绑定的函数,将数据传送到应用程序中。