现在有这么个需求:
WEB服务器(主要处理用户请求)、通信服务器(处理协议)、终端设备。WEB服务器与通信服务器间始终只有一个TCP连接[该连接为ClientChannel](用于接收通信服务器、向通信服务器发送命令的功能)如何设计当用户请求终端数据时,先加载完跳转的页面,之后再向用户显示采集到的数据(由于通信服务器与终端间可能会有比较长时间的通信,如1分钟,因此用户不能等待在这个操作上)getRealTimeData() {
// 封装命令
// 利用ClientChannel发送命令
// 启用一个等待的线程waitThread(等待ClientChannel将数据返回到该线程中),这样程序可以继续往下执行,而不阻塞
// 其他操作
// 返回页面
}
问题是如何在waitThread取到数据请高手解决!!- -!我说不清楚
WEB服务器(主要处理用户请求)、通信服务器(处理协议)、终端设备。WEB服务器与通信服务器间始终只有一个TCP连接[该连接为ClientChannel](用于接收通信服务器、向通信服务器发送命令的功能)如何设计当用户请求终端数据时,先加载完跳转的页面,之后再向用户显示采集到的数据(由于通信服务器与终端间可能会有比较长时间的通信,如1分钟,因此用户不能等待在这个操作上)getRealTimeData() {
// 封装命令
// 利用ClientChannel发送命令
// 启用一个等待的线程waitThread(等待ClientChannel将数据返回到该线程中),这样程序可以继续往下执行,而不阻塞
// 其他操作
// 返回页面
}
问题是如何在waitThread取到数据请高手解决!!- -!我说不清楚
1、第一个请求主发命令后返回来,启动一个线程继续工作,把工作结果存放在缓存里
2、页面通过ajax发出第二个请求,第二个请求直接从缓存里面把数据取来
3、页面处理返回的数据并显示
坦白说你是希望有一个Web Server主动推送Client Browser的机制,而不是Client Browser一直在那里处于等待状态,目前的方式下一般只有Client端向Web Server去定期轮询查看业务的处理程度,否则光靠浏览器Client并没有机制去保证接受Server主动推送的消息
楼主是想先把结果页面的表格框架显示给用户,
等数据出来了,再把数据填写到表格框架里面。在WEB站点的设计里面,一般是不采用某个页面创建线程来执行其他任务的。
因为,当该页面并发率很高的时候,在服务端,会创建非常多的线程来做楼主的那个数据请求。使用Ajax技术,同一个显示页面,可以由很多个页面请求拼凑而成,就像以前的frame标签。
或者楼主先用frame标签试试看,能否达到要求。不能的话,换Ajax也行。另启一个线程去请求数据的方式,还是不用为妙。把这个请求工作,单做一个frame页面(或Ajax)
试试看吧,效果可能要好些。
提交前后,只是多了一个用户回复的数据显示区域。
这个就是Ajax技术的优越性了。
可我问的是如何取得与该用户相对应的数据,而不是如何将数据显示给用户