为啥知乎上消息提醒的红色圆点不用刷新就会自动出现

很容易的。你可以没事向服务器发一条http query,然后有新消息了服务器就响应你,没有新消息就不理直到timeout。
■网友
的这个是用 http://socket.io 实现的。网上有文章讲具体的原理和实现效果。
■网友
你听说过轮询吗?
■网友
菜鸟 :每 x 秒请求一次服务器.有没有新消息都立刻响应.正常 :请求一次服务器.如果有新消息就响应.如果没有新消息就先hold住等有消息再响应或到超时.客户收到响应或者发现请求超时就再发一个请求.(QQ邮箱网页版 f12 一下 )还有就是websocket
■网友
【为啥上消息提醒的红色圆点不用刷新就会自动出现】 应用了一种被称为 websocket 的技术,这是一种通讯协议,与 HTTP/HTTPS/FTP 类似的东西
为啥知乎上消息提醒的红色圆点不用刷新就会自动出现

这种协议是建立的 TCP 协议之上的,TCP 协议就是相当于打电话,呼叫者和接听者需要同时在线并给予反馈,而相对的有一种 UDP 协议,就是短信的机制,发送消息时接收者(指设备)并不需要通知发送人已经收到信息。
建立在 TCP 上的 websoket 开销较少,只需要心跳机制保持连接,有新消息时有实时性且传递数据的压缩性好。
当然解决方案不止这一种,用JS写个定时执行脚本也能简单的达到效果,这种比较适合小网站,并发不高的场景,量大JS的频繁请求会让服务器压力倍增,甚至出现脚本打挂服务器问题。

■网友
按f12。你可以发现这个,楼上的是做web开发的吗?为啥知乎上消息提醒的红色圆点不用刷新就会自动出现

看高亮部分的请求信息。现在这种通知系统用的都是websocket协议。
■网友
猜测是http长连接。客户端发起http request,服务端收到后并不立即response,直到有新消息。


    推荐阅读