Http环境下如何保持连接方式,今日上海网页设计培训学校(http://4415.peixun360.com/)的老师告诉你:
用伪代码来描述一下思路吧:
客户端脚本:
1: function Request()
2: {
3: Ajax.Request(url,OnSuccessed,OnFailed);
4: }
5: function OnSuccessed(response)
6: {
7: //重新发送一次请求
8: Request();
9: //处理返回数据
10: }
11: function OnFailed()
12: {
13: //错误(超时)重新请求
14: Request();
15: }
Web服务:
1: public class IMService : IHttpHandler
2: {
3: public bool IsReusable{return false;}
4: public void ProcessRequest(HttpContext context)
5: {
6: //读取最新数据
7: while(true)
8: {
9: string message = GetMessage();
10: if(!string.IsNullOrEmpty(message))
11: {
12: context.Response.Write(message);
13: break;
14: }
15: Thread.Sleep(500);//等待一段时间再重新读取.
16: }
17: }
18: private string GetMessage()
19: {
20: //取得最新数据
21: }
22: }
这种方案的好处有:客户端可以第一时间得到服务器需要给客户端发送的数据(而至于Web服务怎么知道要给客户端发送数据,也就是服务器的轮循设计,则是另一个需要考虑的方案);可以减化客户端逻辑,无需要创建和释放定时器,并减小由此产生的对客户端性能的损失;减少去服务器的请求次数,减少做无用功,节约节省带宽和减少服务器资源需要处理的连接请求.
相信在此之前,已经有很多人在使用这种方案了.欢迎大家就此方案发表自己的见解.
补充:服务器部分的设计,除了使用轮循外,也可以考虑使用资源互斥访问的方式来设计,这样做可以获得更佳性能,更高实时性,具体的方案应当根据实际情况来考虑.
【寒假招生启动】寒假冷吗?跑跑步就不冷了.寒假来上海网页设计培训,让成绩摆脱寒冷,与你一起奔跑吧!上海网页设计学校寒假招生已火热启动,查看详细内容可点击:http://4415.peixun360.com/ (如需电话回复,请留下您的【姓名+联系方式+城市+课程】,我们会尽快为您致电,祝您今天好心情!)
编辑推荐:http://4415.peixun360.com/news/147042/
友情链接:深圳网页设计培训学校、深圳网页设计培训、深圳网页设计学校(http://649.peixun360.com/)