ajax - Stack Exchange 如何检查新帖子/评论?

标签 ajax heartbeat stackexchange

我一直在关注 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

引用:

关于ajax - Stack Exchange 如何检查新帖子/评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384446/

相关文章:

javascript - XHTML 模式下 MathOverflow 的宝贵天赋

javascript - f :ajax doesn't fire for onevent begin event

javascript - php 页面正确呈现,但 "view source"未显示正确的 HTML

python - Amazon ec2 中 pika-rabbitmq 的良好心跳间隔

matlab - 如何使用Matlab准确地以高BPM输出生成的心跳信号?

openid - 没有 Google+ 的 Google OpenID 委托(delegate)提供商

php - JQuery多文件上传

javascript - 如何将其更改为ajax功能?

iphone - 使用 iPhone 摄像头检测心率

javascript - 堆栈交换站点列表页面中的框重排算法