Javascript PHP更新所有打开的实例,如Facebook

Javascript PHP Updating all open instances such as Facebook

本文关键字:实例 Facebook PHP 更新 Javascript      更新时间:2023-09-26

大家都知道,当你在Facebook的桌面版上并收到通知时。

页面标题为

(1) Facebook

举个例子,你打开了Facebook的3个标签,此时会读取

''(1)Facebook

在其中一个选项卡中,您选择阅读通知,但在一瞬间,您的每个选项卡都会更新以删除

(1)

有人能告诉我如何像Facebook那样在其他开放实例中强制更新吗?

最简单的方法是在每个选项卡上打开一个通道(WebSocket或SSE)。然后,当新消息到达时,您只需将其广播给收件人拥有的所有连接,它就会显示在每个选项卡中(假设每个页面都有JS来处理它)。

在这个问题中,同样来源的选项卡之间还有各种其他通信方式:Javascript;同源标签页/窗口之间的通信-但我认为这不是你想要的,因为对于FB信使这样的东西,你肯定想要实时通知,然后我的第一个建议要容易得多。

我选择使用localStorage

在这里,我可以首先检查chat是否存在

if (localStorage.getItem("chat") === null) {
    localStorage.setItem("chat","0");
}

然后我可以设置每秒的间隔来运行一个名为checkChat() 的函数

setInterval(checkChat, 1000);

使用checkChat()函数,我可以查看它是否等于0,如果等于,则删除(1)或标题中实际存在的任何值。

function checkChat(){
            var chatNum = localStorage.getItem("chat");
            //console.log(chatNum);
            if (chatNum == "0"){
                var actualpagetitle = $(document).attr('title');
                var newtitle = actualpagetitle.replace(/^'('d+')'s+/,'');
                document.title = newtitle;
            }
        }

我已经在我的实时网站上测试了这一点,无论何时更新localStorage.getItem("chat"),它都会更新其余打开的窗口。