服务器推送技术

来源:互联网 发布:淘宝pc端怎么同步手机 编辑:程序博客网 时间:2024/03/29 23:37

BS架构的系统有客户端数据即时更新需求的问题,前面有想过用Ajax定时刷新局部数据的方法,这样并发用户多的话就造成系统开销过大,后来在网上查出采用以下方案可以解决此问题,但还未曾测试保持socket连接当并发用户多起来的时候会怎样,这里与大家分享一下,如果有好的方案希望们不要吝啬,多多指教,在此谢过!

结合JavaScript帧间通信和一个管理网络通信的Java Applet,用推送技术解决这个问题。
Java Applet的任务是通过socket连接服务器并监听内容更新。一旦接收到了新的内容,Applet调用一个JavaScript函数并把包含新内容的HTML传递给JavaScript函数。JavaScript函数运用DHTML和DOM技术,把页面中一个<div>标记的内容用参数中传入的新内容替换。 

在服务器端,创建另一个类的实例响应Socket连接请求,并为每一个新的连接请求创建一个新的线程。每一个线程只检查数据文件是否改变。如果数据文件已经改变,则线程读取文件内容,并把新的数据发送给已经连接的Applet(示例应用把整个文件发送给Applet)。

在客户端,一个隐藏帧包含了上面提到的Applet。Applet实现了连接服务器的功能,并实现了一个简单的通信协议。建立与服务器的连接之后,Applet接收来自服务器的数据,并调用JavaScript函数把数据传入文档。


这样就实现了服务器端推送数据的功能,一有客户上来访问页面就为他建立与服务器的socket连接,服务器端得到改变的数据以后通过这个连接传回客户端。