社区
Web 开发
帖子详情
servlet如何主动向客户端发消息(急)
xieyaa
2009-04-13 04:23:34
我现在做的这样一个方案,服务器是tomcat,servlet处理请求。一个客户端向servlet发送一个http请求,然后保持这个session不断,等待手机向servlet发送http请求,然后servlet处理,然后主动向客户端发送一个消息,告诉它应该执行什么程序。
我现在就想问一下,servlet怎么能主动向客户端发送这个消息。
...全文
950
16
打赏
收藏
servlet如何主动向客户端发消息(急)
我现在做的这样一个方案,服务器是tomcat,servlet处理请求。一个客户端向servlet发送一个http请求,然后保持这个session不断,等待手机向servlet发送http请求,然后servlet处理,然后主动向客户端发送一个消息,告诉它应该执行什么程序。 我现在就想问一下,servlet怎么能主动向客户端发送这个消息。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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连接着,怎么会发送不了数据呢。
Web-服务器推送WebSocketandAjax轮询.docx
1 服务器推送websocket:服务端
主动
向
客户端
发消息
。 目标:
客户端
和服务器建立长连接,服务端与
客户端
可实时收发数据。 原理:使用HTTP协议建立全双工的TCP长连接。 方法:HTML5的WebSocket。 参考:http://www.oschina.net/translate/java-ee-html5-websocket-example 1.1
客户端
:Websocket类,建立连接,发送数据,接收数据。 目标:建立与服务器的连接,与服务器交互,监听事件,控制连接。 方法:WebSocket类。 1.1.1 控制连接:连接服务器、关闭连接 1.1.1.1 连接服务器:创建Web
进程间的对话——aidl(二)
上一节http://www.cnblogs.com/fishbone-lsy/p/5327500.html 主要记录了一个跨进程的图片管理后台,设计了getBookList和addBook两个方法。但不管哪个方法,其实都是
客户端
对服务端
发消息
,然后服务端返回消息。没有服务端
主动
向
客户端
发消息
的情况。所以,在这一节补充一下这种情况。增加一个新书通知的功能。 所谓服务端给客户...
【长链接】Java实现方式SSE+Come4J
sse(Server Sent Event),直译为服务器发送事件,顾名思义,也就是
客户端
可以获取到服务器发送的事件 我们常见的 http 交互方式是
客户端
发起请求,服务端响应,然后一次请求完毕;但是在 sse 的场景下,
客户端
发起请求,连接一直保持,服务端有数据就可以返回数据给
客户端
,这个返回可以是多次间隔的方式 sse 是单通道,只能服务端向
客户端
发消息
;而 webscoket 是双通道,服务器可以
主动
向
客户端
推送信息,
客户端
也可以
主动
向服务器发送信息 【SpringBoot WEB 系列】SSE
WebSocket
什么是WebSocket websocket是HTML5出的东西(协议), 也就会说HTTP协议没有变化, 或者说没关系, 但HTTP是不支持持久连接的.(长连接, 循环连接的不算) websocket是一个支持持久化的协议,服务端可以实时(
主动
)给
客户端
发消息
,
客户端
可以
主动
向服务端发送消息, 是真正平等的对话 websocket原理 1. 服务端运行, 等待
客户端
连接 2.
客户端
...
使用websockets实现后端服务器向前台
客户端
发消息
, python + websockets+ vue
目标 实现服务端(python实现)向
客户端
(Vue实现)
发消息
,这个消息不止一次(如间隔随机的1秒左右发一次),
客户端
前台界面动态接收并展示这个消息内容。 一些原理 # WebSocket 和HTTP一样,也是一种通讯协议,允许服务端
主动
向
客户端
推送数据。 # 在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 # 有很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒), # 由
Web 开发
81,077
社区成员
341,821
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章