请问 服务端渲染的站点如何使用 websocket? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
rita413413
V2EX    程序员

请问 服务端渲染的站点如何使用 websocket?

  •  
  •   rita413413 2021-08-22 08:19:23 +08:00 via iPhone 3085 次点击
    这是一个创建于 1515 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近自己在用 goframe +adminLTE 写一个后台管理站点,所有页面都是服务端渲染。我要做一些通知要用到 websicket 。这个前端的 websocket,要怎样创建才能只需要创建一次就好了?

    现在的情况是,前端每点击一个菜单或者页面,都会全部重新渲染。(当然页面的部分数据请求使用的是 Ajax)

    如果直接每点击一个页面就建立一次,断开一次,这样肯定不合理…… 请问有什么好的方法吗?
    7 条回复    2021-08-23 01:10:01 +08:00
    codehz
        1
    codehz  
       2021-08-22 08:39:33 +08:00 via Android
    目前没有办法跨页面保持连接,SharedWorker 也要求有多个页面才可共享
    建议套一个 iframe,然后保持顶层的不刷新,用 History API 更新 url,用 iframe 的 postMessage 做推送(或者直接在顶层渲染通知)
    建议直接快进到 WebPush,这样页面没打开也能接通知
    yin1999
        2
    yin1999  
       2021-08-22 09:01:58 +08:00 via Android
    @codehz 国内的网络环境,WebPush 很难搞啊
    kidlj
        3
    kidlj  
       2021-08-22 10:31:29 +08:00   1
    全部服务端渲染( template 模版这种)的话,可以考虑一下 Rails 社区的 Hotwire Turbo 方案。Turbo stream 就用来干这个的。

    https://turbo.hotwired.dev
    sunorg
        4
    sunorg  
       2021-08-22 12:27:01 +08:00 via Android
    套 iframe,父页面链接 ws,然后操作子页面,完美解决
    joesonw
        5
    joesonw  
       2021-08-22 12:29:41 +08:00 via iPhone
    页面不刷新那不就是前后分离。要服务端渲染肯定每次刷新掉了,要么自己包个框架,服务器渲染的内容通过 websocket 推回去,前端接到了把容器里的内容替换掉。
    crystom
        6
    crystom  
       2021-08-22 14:52:46 +08:00   1
    jquery-pjax 或者 turbolinks
    rita413413
        7
    rita413413  
    OP
       2021-08-23 01:10:01 +08:00 via iPhone
    @codehz
    @kidlj
    @sunorg
    @joesonw
    多谢大家的回答,原来 adminLTE 有 iframe 版的页面,在顶级页面里面建立连接就可以了……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1006 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:28 PVG 02:28 LAX 11:28 JFK 14:28
    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