JSP中Socket监听问题

 我来答
画安日9391
2013-12-10 · 超过54用户采纳过TA的回答
知道答主
回答量:106
采纳率:100%
帮助的人:50.3万
展开全部
好吧,也许你改不了server端接收请求的action,那么你也只要call 18次ajax就行了,因为client的异步调用的线程是浏览器管理的,你在jsp上写任何代码都不会在client端生出线程来。至于你后台的socket连接你可以把每个放在一个thread里,也可以使用池的方式管理。追问: 我把socket放在Thread里面后,他是可以循环实时的执行,但是前台页面无法获取返回的信息,我刚开始就是这么做的,发现页面调用AJAX发送请求到ACTION这个流程的操作和Thread是不同步的,他们各干各的互不相关,回答: 对啊,ajax请求是客户端线程,浏览器管理的,后台管理socket的thread是你自己建的,根本就是2个东西。所以我建议你,页面部分就每分钟发一次ajax请求,然后在action里去依次访问管理socket的线程拿到地市信息,最后合成一个XML response返回给页面的ajax回调函数。追问: 现在我有两种做法,一是在页面上通过AJAX连接池每分钟执行一次,同时调用18次函数发送18个请求到ACTION,也就是说后台ACTION会接收到18个****.do的请求,每一个请求都是相同的调用DAO操作类中的方法去发送一个Socket请求,获取返回状态和信息后生成XML返回给页面,页面再进行不同的处理。二是在页面上每分钟只发送一个请求,后台根据数据库中的各个地市IP和端口建立18个socket请求,返回的状态信息全部保存在生成的XML中,返回给页面,页面再进行处理, 这两者的区别在哪?是不是第二种的做法会节省一点资源?回答: 明显第二种好: 1。http连接虽然廉价,但是也有代价的。 2。浏览器监听ajax response也是有代价的。 3。server端能同时处理的http请求也是有限的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式