实时数据,是用 ajax 每秒请求好,还是 websocket 好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
johnsneakers
V2EX    问与答

实时数据,是用 ajax 每秒请求好,还是 websocket 好

  •  
  •   johnsneakers 2015-06-11 22:04:08 +08:00 6472 次点击
    这是一个创建于 3783 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司有一个大屏幕,上面需要实时显示注册人数数量和其他交易额度。之前前端做的是ajax 2秒请求一次,不过开个个把小时浏览器就崩溃。。。卤煮这两天又在研究关于PHP的Server框架,自己撸了一个简单的Boardcast,前端和后端websocket连接,后端有一个定时器,每秒拉取数据发现有数据更新再广播给前端。

    那么问题来了,大屏幕实时显示这个东西不是我做的,不过我很想把我的放上去试试。由于我读书少,怕我做的东西放上去也挂了(挂了的代价不大,就是出丑,费力不讨好)。 那么,该是叫那个前端改改他自己的代码,还是装逼的自告奋勇?
    14 条回复    2017-12-19 16:27:34 +08:00
    refresh
        1
    refresh  
       2015-06-11 22:27:49 +08:00
    1. 浏览器崩溃和ajax无关,我猜内存没释放
    2. 如果可以不考虑浏览器的兼容性,实时数据ws比较好,但如果你服务器是用nginx代理,则需要一些小小的配置
    geeglo
        2
    geeglo  
       2015-06-11 22:37:58 +08:00
    别人的东西就多一事不如少一事,自己的东西果断折腾。。

    原谅我年少无知,胆小怕事,怕出丑。
    void1900
        3
    void1900  
       2015-06-11 23:53:49 +08:00
    当然是 websocket
    zkd8907
        4
    zkd8907  
       2015-06-11 23:55:19 +08:00
    资源许可的情况下练练手呗,没啥坏处。
    clino
        5
    clino  
       2015-06-11 23:56:41 +08:00 via Android
    崩溃的是什么浏览器?
    lincanbin
        6
    lincanbin  
       2015-06-11 23:57:19 +08:00
    怕浏览器挂,最简单的就是加个定时器,半小时后刷新页面。

    如果有能力,可以开开发者工具,我猜是递归层级太多,或者是DOM树没清理。

    实时更新当然推荐websocket,如果用Ajax的话,可以用长连接,对性能也有明显的提升。
    johnsneakers
        7
    johnsneakers  
    OP
       2015-06-11 23:59:40 +08:00
    @clino chrome
    clino
        8
    clino  
       2015-06-12 00:01:39 +08:00 via Android
    @lincanbin 我以前记得注意过单纯刷新页面 chrome 内存也会不断增多
    NemoAlex
        9
    NemoAlex  
       2015-06-12 00:10:40 +08:00 via iPhone
    楼主的公司没有友好的讨论技术问题的氛围,还是别待了
    loading
        10
    loading  
       2015-06-12 07:39:23 +08:00 via Android
    你看到别人做不好,然后你也没做过,就别先bb咯…自己做出来,在自己机器其他几天,没事再讨论别人技术!


    让我想起很多老板的话:
    应该很简单吧!稍微改一下,这对你来说很简单的吧…
    lucky2touch
        11
    lucky2touch  
       2015-06-12 08:44:19 +08:00 via iPhone
    看题目我以为是后台压力的问题呢......看来前台的问题大点
    lwbjing
        12
    lwbjing  
       2015-06-12 08:57:31 +08:00
    上吧少年。。能出啥丑。。。
    lucky2touch
        13
    lucky2touch  
       2015-06-12 09:51:02 +08:00
    @loading 技术讨论归讨论,但是实施起来还是不妥,如果楼主在一个公司的话,试想楼主真的解决了问题,原来的前端不是被打脸。然后以后各种问题都会找楼主,而楼主的收入一般不是翻番,所以我建议楼主还是自己捣鼓下技术,公司的问题走一步算一步......
    seasolzombie
        14
    seasolzombie  
       2017-12-19 16:27:34 +08:00
    我在网上看过一篇做过连接测试的文章,结果是 ajax 非常耗时,性能估计也是比较差的,这也就是为何 jsonp 在很多大公司得到十分广泛的应用的原因,大家可以去看看淘宝的是加入购物车都是 jsonp 的。ajax 是一个好技术,它的最佳应用应该是低频率的无刷新更新,但是这些场景的请求频率非常低的,所以如果你的应用需要极强的即时性,websocket 是首选。我们做技术,一定要有一个宗旨,适合的场景应用适合的技术!一个页面 5、6 个 ajax 就为了所谓的前后端分离实践真的是违背了 ajax 的本意。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1710 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:14 PVG 00:14 LAX 09:14 JFK 12:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86