我一直在查看 Chrome 开发人员工具中的“网络”部分,以查看 Stack Overflow 上的一个新的活跃帖子有什么活动。
我希望看到定期的网络活动来检查页面上更新元素的脚本(例如发布的新评论或答案) - 但似乎没有!
我刚刚为我网站上的某些页面实施了定期“心跳”。
Stack Overflow 是否对新帖子进行某种“推送”检查?
我一直在查看 Chrome 开发人员工具中的“网络”部分,以查看 Stack Overflow 上的一个新的活跃帖子有什么活动。
我希望看到定期的网络活动来检查页面上更新元素的脚本(例如发布的新评论或答案) - 但似乎没有!
我刚刚为我网站上的某些页面实施了定期“心跳”。
Stack Overflow 是否对新帖子进行某种“推送”检查?
使用网络套接字。
在页面加载时,站点连接到wss://qa.sockets.stackexchange.com/
websocket 并向其发送<site_id>-question-<question_id>
消息(例如1-question-14384446
),因此订阅问题事件(新答案、新评论、帖子删除、分数更改等)。
这是一个 JavaScript 示例。要测试它是否有效,您可以在您的问题或此答案下添加评论:
const socket = new WebSocket('wss://qa.sockets.stackexchange.com/');
socket.onopen = () => {
socket.send('1-question-14384446'); // subscribe to question events
console.log('Listening for new comments...');
};
socket.onmessage = ({ data }) => {
const obj = JSON.parse(data);
// sent every 5 minutes to check if connection is alive
if (obj.action === 'hb') {
socket.send('pong');
return;
}
const { a: type, commentid } = JSON.parse(obj.data);
if (type !== 'comment-add') return; // not a comment
console.log('New comment with id', commentid);
};
socket.onerror = console.error; // just in case
参考: