V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
henryliufeng
V2EX  ›  Web Dev

google calendar 不同网页端怎么做到同步的

  •  
  •   henryliufeng · 2020-11-10 10:55:47 +08:00 · 3239 次点击
    这是一个创建于 1235 天前的主题,其中的信息可能已经有所发展或是发生改变。

    打开两个 google calendar 网页端,我创建一个事件,另一个网页端很快就同步过来了

    看了下,没有建立 websocket 链接, 求大佬指点,是怎么做到接近实时同步的

    21 条回复    2020-12-05 21:21:47 +08:00
    zarte
        1
    zarte  
       2020-11-10 11:34:39 +08:00
    不是 websocket 就是 ajax 了要不然就是浏览器的 socket
    howellz
        2
    howellz  
       2020-11-10 11:40:46 +08:00
    @zarte 请问浏览器的 socket 是什么东东啊?
    shyling
        3
    shyling  
       2020-11-10 12:05:16 +08:00
    打开页面。。然后 chrome 设置为 offine 。看什么在联网,就知道咯
    henryliufeng
        4
    henryliufeng  
    OP
       2020-11-10 12:56:06 +08:00
    @zarte 但是没有看到 ajax 请求发出去啊
    xiyuesaves
        5
    xiyuesaves  
       2020-11-10 13:49:25 +08:00
    可以用 BroadcastChannel 来实现
    [MDN]( https://developer.mozilla.org/zh-CN/docs/Web/API/Broadcast_Channel_API)

    或者 localStorage(代码来自 [segmentfault]( https://segmentfault.com/a/1190000016927268))
    ```
    // 本窗口的设值代码
    localStorage.setItem('aaa', (Math.random()*10).toString())

    // 其他窗口监听 storage 事件
    window.addEventListener("storage", function (e) {
    console.log(e)
    console.log(e.newValue)
    })
    ```
    wikinee
        6
    wikinee  
       2020-11-10 13:52:22 +08:00
    你们想的是不是太简单了。。。
    henryliufeng
        7
    henryliufeng  
    OP
       2020-11-10 14:20:53 +08:00
    @xiyuesaves 不同主机这样子不行的吧
    wednesdayco
        8
    wednesdayco  
       2020-11-10 14:40:00 +08:00
    感觉就是个轮询呢……
    wph95
        9
    wph95  
       2020-11-10 15:08:40 +08:00
    chrome network debug 了解一下
    里面有个请求
    xxx.google.com/v1/acknowledgments
    https://calendar.google.com/calendar/u/1/sync.sync

    ack 那东西 参考 https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/acknowledge
    然后你就可以去看看 pubsub google 是怎么搞的了
    LnTrx
        10
    LnTrx  
       2020-11-10 15:39:38 +08:00
    FCM ?
    HeyWeGo
        11
    HeyWeGo  
       2020-11-10 15:46:19 +08:00
    第一次看这个效果还是挺新奇的,链接里用的是 web worker
    HeyWeGo
        12
    HeyWeGo  
       2020-11-10 15:46:39 +08:00
    链接我发不了,是个推特链接
    rioshikelong121
        13
    rioshikelong121  
       2020-11-10 15:47:01 +08:00
    你用两个浏览器分别打开页面看看能不能很快同步。不能的话可能就是前端文档之间通信,可以的话就是走服务端。
    HeyWeGo
        14
    HeyWeGo  
       2020-11-10 15:49:07 +08:00
    v 站的发帖机制太迷了!
    sm.ms/image/oImM5YdLwWAFnJ8
    Brooooooklyn
        15
    Brooooooklyn  
       2020-11-10 16:44:58 +08:00
    Fetch + Stream API
    AkideLiu
        16
    AkideLiu  
       2020-11-10 16:48:17 +08:00 via iPhone
    我记得上次看到差不多的问题是,Google 的 live us election 为啥不是 websocket
    mascteen
        17
    mascteen  
       2020-11-10 16:55:02 +08:00
    这么容易实现就不叫谷哥了吧?
    mascteen
        18
    mascteen  
       2020-11-10 16:56:14 +08:00
    肯定是有数据库同步,分布的
    henryliufeng
        19
    henryliufeng  
    OP
       2020-11-10 19:11:30 +08:00
    @wph95 感谢,感觉你说的是对的
    henryliufeng
        20
    henryliufeng  
    OP
       2020-11-10 19:12:24 +08:00
    @HeyWeGo 你发的这个也挺有意思,但是只是对一个浏览器上的不同 Tab 跨机是不行的
    weimo383
        21
    weimo383  
       2020-12-05 21:21:47 +08:00
    @Brooooooklyn 大佬,我想问问你上次发的帖子里的两道字节面试的 github 链接还在吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2432 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:01 · PVG 00:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.