C/S结构客户端(有多个客户端)调用服务端,请求后直接可以返回结果,但是该结果不是最终结果。后续服务端还会生成若干个状态信息。客户端如何才能拿到这些信息。
想到几种解决方法,但都不完美。
1.客户端通过异步WebService方式调用,拿到结果后,如果不是最终状态,再发起一个异步调用(缺点:占用连接)
2.客户端轮询(缺点:占用资源)
3.用户手动触发(缺点:用户体验不好)
C/S结构客户端(有多个客户端)调用服务端,请求后直接可以返回结果,但是该结果不是最终结果。后续服务端还会生成若干个状态信息。客户端如何才能拿到这些信息。
想到几种解决方法,但都不完美。
1.客户端通过异步WebService方式调用,拿到结果后,如果不是最终状态,再发起一个异步调用(缺点:占用连接)
2.客户端轮询(缺点:占用资源)
3.用户手动触发(缺点:用户体验不好)
轮询的方案是最简单的,并且不容易出错,服务器可以返回客户端一个标记,然后客户端再拿这个标记去服务器询问是否有了最终的结果,如果没有,服务器端可以返回一个时间,也就是下次访问的间隔,这样服务器端就可以控制轮询的间隔了。
当然,还有一个方案,就是服务器端做完所有的事情以后再返回客户端,客户端可以起一个线程在那里等待服务器的最终结果。