首页 新闻 会员 周边 捐助

如何在服务端上处理长时间的客户端请求

0
悬赏园豆:10 [待解决问题]

1) 比如用户在页面上提交一个请求,要求服务端处理某项业务。这个业务可能很慢,大概要十多分钟才能完成。

2)用户提交请求后可以做其他的操作而无需等待服务器端处理完,如果服务端处理完成后返回消息给客户端,期间客户端可能断线,当下次客户上线的时候仍可以得到服务端的处理结果。

3)同时这个提交请求操作可能存在并发操作(即多个客户同时提交请求)。

这个过程是怎么实现的

hellocjr的主页 hellocjr | 初学一级 | 园豆:186
提问于:2014-02-18 14:57
< >
分享
所有回答(1)
0

客户端提交请求后,如果请求被接受并可以处理,那么就立即返回,然后客户端页面通过 js 轮询来查询是否处理完成。

Launcher | 园豆:45050 (高人七级) | 2014-02-18 15:03

可是如果用户想提交请求后就关闭原来的页面,然后到其他页面操作怎么办?我想了解的是1)客户端和服务端之间是怎么实现的,2)即使客户端断了链接,当下次上线的时候仍可以收到服务端的处理消息?客户端与服务端怎么通信?要建2个项目的吗

支持(0) 反对(0) hellocjr | 园豆:186 (初学一级) | 2014-02-18 22:20

@hellocjr: 因为你这里提到了用户,所以我假定你所述的流程是发生在用户已经登录的前提下。因此,服务端可以根据用户 ID 来保存已经处理的请求,当下次同一用户 ID 访问时,服务端就可以根据用户 ID 查询出用户未查看过的已处理请求,并将其设置为已查阅。所以即使断线,或者用户从另一个位置登录页面,那么他同样能看到已处理但尚未查阅的请求。

根据你对系统伸缩性的要求,可以将处理请求的模块设计为一个独立的系统。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-02-19 09:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册