社区
CSS
帖子详情
高分求教:服务器如何通知客户端发送更新请求?(在线等)
qkyong
2007-12-07 10:43:48
客户端发送初始HTTP请求,服务器给其响应客户的帐户信息,信息通过XML格式返回,客户端显示出来。
服务器端检测到客户帐户发生变化后,需要通知客户端发起更新请求,请问服务器如何实现这种功能?
...全文
668
11
打赏
收藏
高分求教:服务器如何通知客户端发送更新请求?(在线等)
客户端发送初始HTTP请求,服务器给其响应客户的帐户信息,信息通过XML格式返回,客户端显示出来。 服务器端检测到客户帐户发生变化后,需要通知客户端发起更新请求,请问服务器如何实现这种功能?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
joycheney
2007-12-11
打赏
举报
回复
jetty的部署你可以在他的官方网站上看看,可以很好的部署,甚至可以加到对方系统服务里面。
另外,我的方案只是在轻量级瘦客户端开发上提出的,这个前提是你提供服务器,对方只提供客户端。你想做成商品,你的客户想要看到的展示很可能是眩目的效果,js不是不能写很漂亮的效果,可是js的表现力再强也强不过flash,哪怕你用过所有的css滤镜。
而flash里面有socket编程,带flash的页面属于富客户端,它有天然的socket长连接,不需要你改装http的request-response机制。你只需要再写一个socket服务器段来监听请求,建立连接,就能向客户端发出通知了
qkyong
2007-12-10
打赏
举报
回复
太感谢了,我确实没这方面的基础,现在先看看可行性,以后开发里,还得多多请教。5天后给你加分哈
另外,如你所说,jetty是性能最好的,但我想问下,如果我想做到商用的产品里去的话,用jetty合适吗?
或者用什么方案最适合?
joycheney
2007-12-09
打赏
举报
回复
另外,这个思路最关键的地方就是要挂起客户端的请求,延时返回。
只要你不使用activeX,或者java applet的方式,只是轻量级的http瘦客户端,你就必须明白,你必须遵循request-respond的机制,这个是不可能改变的,不管你是xmlhttprequest还是不断refresh,你只能在这个机制上加以修改,让他达到服务器通知的效果。
延时返回的方法有很多,大部分http服务器都可以提供,比如php里面可以sleep,我之所以使用jetty是因为它是很底层的,可以很底层的管理每一个请求的线程,而且专门设计过一个挂起请求的解决方案和专用的类,这样的好处就是挂起客户端请求的开销可以降到最小,用php或者.net开销都过大了,因为他们没有为此专门设计过。
joycheney
2007-12-09
打赏
举报
回复
客户端执行简单的js脚本,就是IE,firefox这样的浏览器。
如果客户端发出请求后,服务器马上回复,还有后面的事情么?
资料你上他们官方网站看好了,这只是Ajax技术应用的一个极端而已。
我这里假设你了解Ajax技术吧,不了解可以上网查。
客户端里的js代码使用Ajax通过XmlHttpRequest请求服务器端,服务器端不返回,形成长连接,等服务器端有数据更新,服务器返回,Ajax异步处理,这样子通信就是即时的。
jetty官方网站:
http://www.mortbay.org/
你到上面下一个jetty下来,里面有chat这个sample的。
solaris10支持10万连接数,这个我就不解释了,你到sun公司里面看他的产品介绍就知道了,可以免费下载的。
我这里也没什么资料,开发文档涉及商业机密,不可能给你的。只是给你一个提示而已,另外也纠正你一个误区,就是连接数的问题,你服务器端为什么要对每一个请求新开一个端口呢?难道就不能所有连接共用一个端口?(比如80端口)
我现在又不知道你基础怎样,所以也只能说到这里吧。我觉得你只是需要一种即时通信的思路了,什么服务器作为后台不重要。如果你技术过关,自己写一个web服务器处理这种并发请求也是可以的,不一定要用jetty(使用jetty需要JAVA基础)
qkyong
2007-12-09
打赏
举报
回复
谢谢joycheney,但我有二个疑问:
1 这个方法对客户端要求是否过高,我现在想把客户端看成一个普通的浏览器,只是增加能识别服务器的
通知的功能?
2 客户端发请求,服务器一定要立即回复的,你这里却要把客户端的请求挂起?
请再帮忙解答下,如果有相关资料,能不能发给我qkyong@yahoo.com.cn,先谢了!
joycheney
2007-12-09
打赏
举报
回复
你需要用Ajax技术,你可以在网上查相关资料
我明白你的意思,你需要服务器端发出通知,而不是用客户端提出请求。
我告诉你以前我是怎么做的吧,你到网上查一个jetty的jsp平台,我以前用的是jetty6.0 ,现在应该有更高版本了,jetty6.0提供了一个叫做continuous connection的东西,这是什么呢,简单解释一下,就是一种对服务器端收到http请求,但是不马上返回结果,一直挂起,知道服务器发生变化,觉得应该通知客户端的时候,对客户端返回请求。
换句话说,只要你的客户端一开始向你服务器端请求数据,服务器端挂起请求,在有需要时再返回客户端,客户端使用Ajax异步处理,在回调函数里写上相关处理,服务器端没有返回时回调函数不会被触发。这样就能做到即时的消息通知,而且并不像客户端不断refresh一样占用无效的流量。
jetty6.0里面提供了一个chat的sample,这个技术就是为聊天室设计的。
关于连接数的问题,其实65534是一个错误的数字,首先,如果你用的是windows平台的服务器,很遗憾,上限2048,因为以前我也做过相关东西,所以也找过破解,没有办法改变这个连接数。
然后,如果你愿意用其他平台,那么可以告诉你Solaris10的连接数达到十万,我有个朋友就是使用jetty6.0和solaris10的组合做的聊天室,通讯效果不错的。
gems76
2007-12-08
打赏
举报
回复
comet
qkyong
2007-12-08
打赏
举报
回复
但只有服务器端能检测帐户变化,类似于QQ的短消息通知机制,如果服务器和客户端建SOCKET,服务器可以
建多少个呀?不会是每个客户端都要占用一个TCP或者UDP端口吧(毕竟最多只有65534个哈),请高手继续指教!
擒兽
2007-12-08
打赏
举报
回复
向客户端通信,服务器压力大。毕竟用户是主动的,用户在进行操作肯定要再向服务器提交请求,在提交的时候验证也行,或者AJAX后台持续验证。
purexu
2007-12-08
打赏
举报
回复
你可以反过来~在客户端获取到信息后发送帐户信息去服务器端~服务器端检测到客户帐户发生变化后再通知客户端发起更新请求~
qkyong
2007-12-07
打赏
举报
回复
自己顶下,
这里强调下,服务器需要通知特定的客户端进行更新,而不是对所有客户端进行更新,客户端更新只是获取XML,由客户端自己去生成页面。
论坛里有人说,服务器和每个客户端建一个SOCKET连接,这样是否太浪费,且服务器也没这么多端口来支持大量用户呀?
请高人指点下,谢谢!
《ACM竞赛-C/C++入门》 C语言-13
尹成老师带你步入C语言基础的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以C语言为核心,完整精彩的演练了C语言操作流程以及各种精彩的小项目等,提高竞赛能力,非常适合同学们学习! 清华大学尹成...
CSDN回帖得分大全(近两年)
√vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC 基础类] 40 ylongwu 05-21 20:486 ylongwu06-28 13:42管理√为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] 40 chencheng8095 05-23 00:2911 xianglitian06-10 11:51管理√CFileFind::FindFile 支持通配符么? [VC/MFC 基础类] 100 wysbk002 05-22
VC++中可能遇到的问题收藏
VC++中可能遇到的问题收藏 | 旧一篇: 在VC中动态加载ODBC时的一些小细节 function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);
基础
各位兄弟,在SDK编程中如果实现窗口分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?
高分
请教如何限制程序运行的方法?求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个问题.如何对 I/O 端口进行操作?有了该问题就有了思考(100分 献礼!)如何
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx 怎样将后台生成的在内存中的图象显示到
客户端
Microsoft IE WebControls下载地址 如何在DATAGRID中使用JAVASCRIPT脚本控制 DataGrid中连接到下一页显示数据 下载中文名
CSS
61,112
社区成员
60,732
社区内容
发帖
与我相关
我的任务
CSS
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
复制链接
扫一扫
分享
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章