3

我一直在查看 Chrome 开发人员工具中的“网络”部分,以查看 Stack Overflow 上的一个新的活跃帖子有什么活动。

我希望看到定期的网络活动来检查页面上更新元素的脚本(例如发布的新评论或答案) - 但似乎没有!

我刚刚为我网站上的某些页面实施了定期“心跳”。

Stack Overflow 是否对新帖子进行某种“推送”检查?

4

1 回答 1

0

使用网络套接字。

在页面加载时,站点连接到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

参考:

于 2021-11-29T17:23:03.327 回答