一个页面20秒读取一次socket发送的数据,但是这个socket是每5秒发送一次数据(应用程序)
当我加载页面,读取Action,socket连接成功,程序解析,这个时候就没页面的事了,因为它是20秒加载一次
但是服务端的程序是5秒发送一次的数据,所以Action 下的socket还是按照5秒钟解析一次数据,这个时候就有问题了页面的请求解析和服务器端发送的数据迫使客户端解析
然后我的程序就报异常,怎么样解决这个问题?用线程吗?
不知道我清楚了吗?
当我加载页面,读取Action,socket连接成功,程序解析,这个时候就没页面的事了,因为它是20秒加载一次
但是服务端的程序是5秒发送一次的数据,所以Action 下的socket还是按照5秒钟解析一次数据,这个时候就有问题了页面的请求解析和服务器端发送的数据迫使客户端解析
然后我的程序就报异常,怎么样解决这个问题?用线程吗?
不知道我清楚了吗?
2.Delphi写的应用程序,也就是Socket的服务器端,当有也有把数据存入到数据库
3.页面每20秒读取一次应用程序,但是应用程序是每5秒发送一次数据有说明白吗?
看懂了。楼主应该把这个帖子发到 Delphi 版。
但是Delphi 写的应用程序已经成型了,也就是说和它没什么事现在主要是Java这边的事
那现在有没有什么办法能一直保持连接的状态,也就是说,当服务端段发送数据给的我的时候,
我就直接显示在页面上?
而不想请求-刷新-响应
1、这个系统的目的是什么?
2、这个系统包含那几个部分?
3、每个部分是如何输入输出的?
LZ的回答是:(括号里是我加的)
1.实时读取socket的数据,而不从数据库读取,(谁实时读取?Server端?Client端?)
2.Delphi写的应用程序,也就是Socket的服务器端,当有也有把数据存入到数据库(怎么后头又冒出Java来了?Java是服务器端还是客户端?)
3.页面每20秒读取一次应用程序,但是应用程序是每5秒发送一次数据 (页面是Winform还是Webpage?应用程序给谁发数据?)
因为客户端的一次请求,web server会起一个线程,当相应结束后,线程也就消失。这时你在Action中建立的socket连接也就随之断开。
所以,客户端每二十秒请求一次,每次请求,都会和socket server新建立一个连接,这时能取到的数据只是新建立连接后socket server发送的第一次数据。
要解决这个问题有一个变法:就是另外与一个运行在web server上的常驻内存的进程,专用于接收socket server发送的数据,将接收到的数据存在DB中或文件中,这回每次请求直接去取相应的时间段的数据就可以了。希望这对LZ有帮助!
2.Delphi写的应用程序,相当于服务器端,Java和它进行Socket通信,那么Java不就是客户端
3.页面那是Jsp,Socket连接成功后,服务器端就是每5秒发送一次数据,发给java 客户端
这回有说明白吧
Delphi干的事是每秒钟读取11个工厂的信息,然后存储到一个表里面,用于查询
如果从数据库里面读,那样的话,数据就不是实时的了,
所以说还是得需要从Socket里面进行读取
就可能是10分钟或半小时前的数据了,表里面的数据,只是用来查询
而Socket发送的数据用来实时显示的
是不是没有这100人同时读取socket的速度快?
2.Delphi写的应用程序,相当于服务器端,Java和它进行Socket通信,那么Java不就是客户端
3.页面那是Jsp,Socket连接成功后,服务器端就是每5秒发送一次数据,发给java 客户端Delphi每5秒向java的Servlet发送数据
Servlet把数据保存
Servlet每20秒用保存的数据刷新jsp
Servlet可以有数据就发给Jsp,而保持连接不中断?