简单说一下,使用Swing/RCP或其他胖客户端 ---HTTP--->Java Web服务器的
这种情况下,如果服务器有什么消息要“即时”(!=“及时”)通知到客户端时
一样可以使用Long Polling技术,大概的做法如下:
客户端和服务器使用Hessian技术来做,同时客户端使用能够支持Cookie的功能(JDK6+下加1行代码即可)
1>服务端要实现一个事件池,这个事件池能够区分不同用户的事件,服务端一有即时信息要通知客户端,就new一个Event,放入事件池中(事件池能够根据用户id自动为事件排队),并使用notifyAll进行通知action的poll方法
2>客户端使用Hessian调用action一个poll(long timeout)方法,一旦有该用户的事件,poll中的wait方法会被事件池唤醒,poll方法能够从事件池中获得要通知给本用户的那个事件,然后返回,这样就能做到即时告知客户端;如果timeout时间内没有事件,则直接返回null给客户端。
返回给客户端的是一个Event对象,非空情况,里面包含了具体的消息对象(任意Object,只要implements java.io.Serializable);
3>客户端接收到该Event后,能够判断如何处理,然后继续再调用poll(timeout)方法;如果返回的Event为null,那二话不说,也继续调用poll(timeout)
.....
这是我们正在使用的一个设计的基本思想,我们使用时,代码是做了一些必要的封装以便于集中精神做业务开发。
====================
不要自己再开发一个什么TCPServer,一个字母一个字母从Socket代码编写开始
这对服务器、客户端开发人员来说都是复杂的事情,费时费神的事情
分享到:
相关推荐
Golongpoll 是 golang HTTP 的 longpolling 库,可以使构建 web pub-sub 更加容易。基本用法:import "github.com/jcuga/golongpoll" // This launches a goroutine and creates channels for all the ...
长轮询(Long Polling)和Comet技术是Web实时通信(Real-Time Web Communication)中的两种重要机制,它们主要用于实现服务器向客户端的即时数据推送,而不再局限于传统的HTTP请求-响应模式。在本文中,我们将深入...
1. **长轮询(Long-Polling)**:客户端发起请求,服务器保持连接直到有新数据可发送,然后才返回响应并关闭连接。 2. **HTTP流(HTTP Streaming)**:服务器在响应头中设置适当的Content-Length或Transfer-Encoding...
这是一个实作Long polling 机制的web 程式没有多余不相干的功能,纯粹的comet programming 基本范例 Long polling的介绍可参考这篇 程式介绍 index.php 为主程式进入点 allmsg.php 为第一次程式进入,抓取所有讯息 ...
Comet4j是一个开源的Java库,专门设计用于实现Comet技术,即长轮询(Long Polling)和HTTP流,以实现在Web应用中提供实时通信的能力。这个Demo包含了源代码和操作手册,帮助开发者快速理解和应用Comet4j。 在Web...
Comet4j的核心理念是利用持久化连接(Long Polling)或HTTP流(HTTP Streaming)来突破HTTP协议的限制,使服务器可以在接收到新数据时立即推送到客户端,而无需等待客户端的下一次请求。这种方式极大地提高了应用...
在这个示例中,`poll`函数发送请求到服务器的/polling-endpoint,当请求完成时,根据响应状态判断是否需要重新启动轮询。 总结来说,长连接和长轮询都是解决HTTP协议实时性问题的有效方法,它们各有优缺点,适用于...
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用