servlet如何主动向客户端发消息(急)

xieyaa 2009-04-13 04:23:34
我现在做的这样一个方案,服务器是tomcat,servlet处理请求。一个客户端向servlet发送一个http请求,然后保持这个session不断,等待手机向servlet发送http请求,然后servlet处理,然后主动向客户端发送一个消息,告诉它应该执行什么程序。
我现在就想问一下,servlet怎么能主动向客户端发送这个消息。
...全文
950 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
小霍夫 2009-04-15
  • 打赏
  • 举报
回复
12楼看清楚再说好不好..
第一句话那是我引用lz 的..
xieyaa 2009-04-15
  • 打赏
  • 举报
回复
关键是PC端是C#写的应用程序,不是web的,所以各位的方法不可行。我用了备用方法,就是服务器主动连接PC端,post过去一个请求。不算完美,但是能解决问题。
专业二三维GIS 2009-04-14
  • 打赏
  • 举报
回复
呵呵,我上贴批评的是9楼wolfKingTy,11楼的mengweilil不要见怪
专业二三维GIS 2009-04-14
  • 打赏
  • 举报
回复
楼上的不懂就别乱说.
http连接是一种短连接,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接. 也就是你提交请求到页面停止加载后就断开连接了,断开之后服务器是不可能向客户端发送任何数据的.
总之,采用http协议时,客户端是主动的,服务器端是完全被动的,没有客户端的请求就不会有数据传递.
所以,如我上面的贴子所说,楼主别想让服务器通过Servlet主动实时地发送数据,这是基本常识,死了这条心吧.
当然,你要实现实时给客户端发送信息的功能,所以变通一下采用其它方式:
1.客户端通过定时器以AJAX或类似的方式定时从服务器端获取消息,间隔时间短时效果看起来和实时的也没多大差别,只是比较费资源.
2.通过长连接实现,比如写一个Flash或其它ActiveX控件,与服务器建立长连接,这样服务器就可以主动发送消息给客户端了.
mengweilil 2009-04-14
  • 打赏
  • 举报
回复
据我所知,servlet不能push,不过。。。。。。。
xieyaa 2009-04-14
  • 打赏
  • 举报
回复
comet是针对客户端是网页的情况,我现在的情况是,客户端用C#做的,没办法用comet
小霍夫 2009-04-14
  • 打赏
  • 举报
回复
LZ 服务器跟客户端有一个session连接着,怎么会发送不了数据呢。

我看你对session都不是很了解o..哪个说的 服务器和客户端有 一个session边接着..

sessoin是三大作用域之一是在服务器上的.




lookupwtd 2009-04-14
  • 打赏
  • 举报
回复
用ajax发生请求,在服务器中部不要忙着响应,另外开启一个线程去等待手机发送请求。
让响应线程wait,直到手机发送请求(可以做个标识),可行性有多高我就不知道了。
bowlongcn 2009-04-13
  • 打赏
  • 举报
回复
comet可以实现你的想法。现在glassfish实现了这个功能。
tomcat的我还是试用成功。好像必须设置成nio模式后可行。(具体没试过)不过tomcat的文档上有写。

还有一个经过验证的方式就是我们自己实现的web服务器可以很简单的实现这样的功能。
连接上来后没收到消息等到有下行消息后就返回。但是连接保持时间不能超过60秒。
移动的网关有限制。超过时间后,网关会主动断开。
ben0759 2009-04-13
  • 打赏
  • 举报
回复
servlet是真的不可以的。不过,如果你用ajax向服务器发信息,可以通过计时器等方式实现这样的效果。
xieyaa 2009-04-13
  • 打赏
  • 举报
回复
没了?
真的没办法啦?
yusilong860815 2009-04-13
  • 打赏
  • 举报
回复
赞成ls的说法
专业二三维GIS 2009-04-13
  • 打赏
  • 举报
回复
servlet不可能主动向客户端推送信息,死了这条心吧
rtdb 2009-04-13
  • 打赏
  • 举报
回复
客户端可以定时向服务器端查询。
zzxiaoma 2009-04-13
  • 打赏
  • 举报
回复
根据我的了解他属于推技术,ajax可以实现拉技术,还不知道能不能实现推技术,好象ruby可以实现
xieyaa 2009-04-13
  • 打赏
  • 举报
回复
我在网上查到的资料都说是http协议是面向无连接的,有请求才有回应,回应之后就关闭了。不过我总感觉应该可以实现的,服务器跟客户端有一个session连接着,怎么会发送不了数据呢。

81,077

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧