根据项目需求要实现一个长轮询,前台jq异步请求后台IHttpAsyncHandler,在IHttpAsyncHandler中有一个每隔2秒读取一次数据库的方法来监视数据库。模板页中放了一个iframe用来接收服务器主动发送的数据并且再次发送请求,现在所有的都已经做好了,不过还有一个问题,如果页面刷新的话会重新发送一个请求,而上次发送的请求还在IHttpAsyncHandler中执行,这样就是两个请求一起执行了。如果数据库有数据改变,并且是第一次请求IHttpAsyncHandler监视到的话,由于页面刷新过了,第一次的连接已经断开,所以前台就不能接收到数据了。请教各位 像我这种情况有什么好的解决办法没?
给IHttpAsyncHander做个标识,用来标识请求的客户,如果有相同的标识进来,则把之前的Handler结束。
如果这样做的话,假如服务器接收到第二次的请求的时候,第一次的请求刚好监视到数据变化了,那直接结束掉第一次的请求,前台不是也接收不到吗?
@咦?: 真那么纠结的话,结束前检查一下要结束的Handler是否读取到数据了。
@Rainier-Soft.Com: 这样做也可以,不过细节部分实现起来很麻烦。。先试试