现在有这么个需求:
WEB服务器(主要处理用户请求)、通信服务器(处理协议)、终端设备。WEB服务器与通信服务器间始终只有一个TCP连接[该连接为ClientChannel](用于接收通信服务器、向通信服务器发送命令的功能)如何设计当用户请求终端数据时,先加载完跳转的页面,之后再向用户显示采集到的数据(由于通信服务器与终端间可能会有比较长时间的通信,如1分钟,因此用户不能等待在这个操作上)getRealTimeData() {
// 封装命令
// 利用ClientChannel发送命令
// 启用一个等待的线程waitThread(等待ClientChannel将数据返回到该线程中),这样程序可以继续往下执行,而不阻塞
// 其他操作
// 返回页面
}
问题是如何在waitThread取到数据请高手解决!!- -!我说不清楚

解决方案 »

  1.   

    就是WEB服务器收到用户请求后,向通信服务器发送请求命令,由于结果返回比较长时间,所以先让跳转到页面,减少用户等待时间这中间就要启动一个线程进行等待,而这个数据返回的是另一个总监听的连接线程里接收
      

  2.   

    可以试试用ajax
    1、第一个请求主发命令后返回来,启动一个线程继续工作,把工作结果存放在缓存里
    2、页面通过ajax发出第二个请求,第二个请求直接从缓存里面把数据取来
    3、页面处理返回的数据并显示
      

  3.   

    本质上Http是无状态协议的,所以你提交完跳转之后,状态是不记录的。
    坦白说你是希望有一个Web Server主动推送Client Browser的机制,而不是Client Browser一直在那里处于等待状态,目前的方式下一般只有Client端向Web Server去定期轮询查看业务的处理程度,否则光靠浏览器Client并没有机制去保证接受Server主动推送的消息
      

  4.   

    我也推荐楼主,在Web服务器上面,使用Ajax技术。
    楼主是想先把结果页面的表格框架显示给用户,
    等数据出来了,再把数据填写到表格框架里面。在WEB站点的设计里面,一般是不采用某个页面创建线程来执行其他任务的。
    因为,当该页面并发率很高的时候,在服务端,会创建非常多的线程来做楼主的那个数据请求。使用Ajax技术,同一个显示页面,可以由很多个页面请求拼凑而成,就像以前的frame标签。
    或者楼主先用frame标签试试看,能否达到要求。不能的话,换Ajax也行。另启一个线程去请求数据的方式,还是不用为妙。把这个请求工作,单做一个frame页面(或Ajax)
    试试看吧,效果可能要好些。
      

  5.   

    我们现在的CSDN论坛。当你提交回复的时候,就不会刷新页面的。楼主不妨仔细观察看看。
    提交前后,只是多了一个用户回复的数据显示区域。
    这个就是Ajax技术的优越性了。
      

  6.   

    我知道可以用ajax将数据显示给用户,还可以使用frame
    可我问的是如何取得与该用户相对应的数据,而不是如何将数据显示给用户