V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rita413413
V2EX  ›  程序员

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

  •  
  •   rita413413 · Aug 22, 2021 via iPhone · 3368 views
    This topic created in 1709 days ago, the information mentioned may be changed or developed.
    最近自己在用 goframe +adminLTE 写一个后台管理站点,所有页面都是服务端渲染。我要做一些通知要用到 websicket 。这个前端的 websocket,要怎样创建才能只需要创建一次就好了?

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

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

    https://turbo.hotwired.dev
    sunorg
        4
    sunorg  
       Aug 22, 2021 via Android
    套 iframe,父页面链接 ws,然后操作子页面,完美解决
    joesonw
        5
    joesonw  
       Aug 22, 2021 via iPhone
    页面不刷新那不就是前后分离。要服务端渲染肯定每次刷新掉了,要么自己包个框架,服务器渲染的内容通过 websocket 推回去,前端接到了把容器里的内容替换掉。
    crystom
        6
    crystom  
       Aug 22, 2021   ❤️ 1
    jquery-pjax 或者 turbolinks
    rita413413
        7
    rita413413  
    OP
       Aug 23, 2021 via iPhone
    @codehz
    @kidlj
    @sunorg
    @joesonw
    多谢大家的回答,原来 adminLTE 有 iframe 版的页面,在顶级页面里面建立连接就可以了……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3164 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 14:31 · PVG 22:31 · LAX 07:31 · JFK 10:31
    ♥ Do have faith in what you're doing.