首页 新闻 会员 周边

.net 实现长轮询的问题

0
悬赏园豆:50 [已解决问题] 解决于 2013-05-23 10:14

根据项目需求要实现一个长轮询,前台jq异步请求后台IHttpAsyncHandler,在IHttpAsyncHandler中有一个每隔2秒读取一次数据库的方法来监视数据库。模板页中放了一个iframe用来接收服务器主动发送的数据并且再次发送请求,现在所有的都已经做好了,不过还有一个问题,如果页面刷新的话会重新发送一个请求,而上次发送的请求还在IHttpAsyncHandler中执行,这样就是两个请求一起执行了。如果数据库有数据改变,并且是第一次请求IHttpAsyncHandler监视到的话,由于页面刷新过了,第一次的连接已经断开,所以前台就不能接收到数据了。请教各位 像我这种情况有什么好的解决办法没?

龙卷风摧毁停车场!的主页 龙卷风摧毁停车场! | 菜鸟二级 | 园豆:210
提问于:2013-05-22 14:41
< >
分享
最佳答案
0

给IHttpAsyncHander做个标识,用来标识请求的客户,如果有相同的标识进来,则把之前的Handler结束。

收获园豆:50
I,Robot | 大侠五级 |园豆:9783 | 2013-05-22 15:31

如果这样做的话,假如服务器接收到第二次的请求的时候,第一次的请求刚好监视到数据变化了,那直接结束掉第一次的请求,前台不是也接收不到吗?

龙卷风摧毁停车场! | 园豆:210 (菜鸟二级) | 2013-05-22 15:51

@咦?: 真那么纠结的话,结束前检查一下要结束的Handler是否读取到数据了。

I,Robot | 园豆:9783 (大侠五级) | 2013-05-22 15:56

@Rainier-Soft.Com: 这样做也可以,不过细节部分实现起来很麻烦。。先试试

龙卷风摧毁停车场! | 园豆:210 (菜鸟二级) | 2013-05-23 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册