实时会话如何工作(有多个用户)?

How do live sessions work (with multiple users)?

我已经想了很久了,我想我现在要问了。我的问题是 live session 是如何工作的?例如,实时聊天 session,或 JSfiddle.net 上的实时 multi-user 更新程序。这两个项目如何立即更新?在实时聊天的情况下,它是否每秒从 AJAX 更新到服务器?

抱歉,如果我的问题被误解了,但我的问题很简单,live sessions 如何与多个用户一起工作?

编辑

Stack Overflow 是怎么做到的?每次发生什么事我都会收到通知,是每秒更新一次数据库以查看是否发生了什么事,还是有更好(更有效)的方式来做这件事?

有几种方法可以做到。

现在人们最常用的方式是通过 websockets。您可以 google 该术语并了解它。基本上,网络服务器会在决定时通过套接字通知您。

另一种方式是轮询。人们过去常常这样做。轮询几乎是一种愚蠢的方式:不断(或每隔一秒左右)向网络服务器发送 ajax 请求,询问是否有任何新内容。

另一种有趣的方式是发送一个 get 请求,该请求在一定时间内保持打开状态,即使在收到响应之后也是如此。它的功能有点像您打开文件或连接的流,它会一直打开直到您关闭它(或直到某些其他情况)。我不太熟悉这种方法,但我知道 Google Drive 将其用于多用户文件编辑。只需打开同一个 Google 云端硬盘文档的两个会话并检查页面。您会在控制台中看到,每次键入一段文本时,它都会发送一个 post,并且您始终至少有 1 个未决的获取请求。在某一时刻它会关闭,马上就会有一个新的开始。

简而言之:Websockets、轮询以及最后一种方法。