开发者社区> 问答> 正文

Web页面的刷新问题 400 请求报错 

场      景:在Web应用中,用户的体验是很重要的,因此衍生了Ajax等异步请求技术。
问题描述:那么对于页面刷新的发起者,一般是用户,用户通过点击、拖拽滚动条,进行触发事件,向后台发送请求(Ajax),后台返回数据(json或其他格式),前台解析,展现给用户。
              那么,有没有可能是后台做一个定时任务,定时发送给前台,前台解析数据;这里的转换主要是刷新的发起者,由前台转换为后台
              问题是:1th.这种由后台发起刷新的方式 可行不可行?
                         2th.如果要做,应该从哪些方面入手?
     我的思路:后台保持一个线程用于发送数据(可能的方式是,通过HttpServlet中的response方法 用writer流写出数据,而后前台解析。
     问题是,前台如何能监听后台发送的信息,或者说如何能与后台的线程做到同步?
      不知道这种想法 是对 是错,望指正!
      谢谢

展开
收起
kun坤 2020-05-29 11:26:16 1139 0
1 条回答
写回答
取消 提交回答
  • http协议本身就是请求-响应, 不可能反向。所谓的服务器push其实核心依然是依靠浏览器主动发起请求,有两种方式,一种是js轮询请求,一种是长连接。 长连接指发送请求后,服务器不是立即响应而是等到有推送数据时在响应,如果中间超时,浏览器还要再发送请求过去。 ######回复 @Anger_Coder : 长连接是必须有线程的,否则无法同时处理多个长连接请求。发起方一定是用户端!不太明白你问的是什么意思?######没错,那可以理解为http虽然是tcp socket,但是短连接,无状态信息是吧,而且js轮询请求 是做在client端的;那么有没有可能,服务器端做无差别的消息发送,client端 做校验,那么无论动态模板还是静态页,都是没有常驻内存的,也就是类似于php那种脚本语言,没有线程、进程;那么长连接的建立 是当客户端发起连接请求开始的;那么对用户状态 如何 监控呢?######js定时执行

    ######你好,用过js定时 用的是setInterval,但这个的前提是 客户端打开了浏览器,并且浏览器能执行js代码,发起者 还是客户端######可行的,反向ajax就是这么做的,只不过会使服务器的压力增大######回复 @Anger_Coder : 我也只是知道有这个东西,具体也没用过,哈哈######谢谢,我先了解下反向Ajax,不懂的话 在请教你######反向Ajax?即服务器Push。###### 这个就像osc的动弹嘛。osc用的是setTimeout来做的吧
    dwr也可以,都可以看看 ######这叫服务器推送,可以百度一下: HTML5 Server-Sent Events和HTML5 WebSockets,不过这要求使用支持HTML5的浏览器,IE8及以下只能用客户端拉取了,就是长连接Long-polling。######好的,谢谢,我会了解相关的东东滴:)######XMPP?######可参考Html5的WebSocket技术######这个可以做,在服务器端和客户端之间保持一个连接,然后服务器端有跟新内容就像客户端写入,没有跟新的内容也不关闭连接。但是这样非常消耗性能,如此的话就只能采用折中的方法,每个连接保持一段时间,过了这段时间关闭,有新的请求过来的时候重新创建一个连接,如此循环######恩,了解,我先实现一个demo..感谢######用blazds向前段的swf文件推送数据,前端的swf文件你设置成不可见就可以了,然后将获取到的数据再传送给js调用,这样就不用考虑长链接或者websocket之类不同浏览器的特性了######swf在这个项目中 不适用了T_T

    2020-05-29 12:11:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载