用Scala实现简单的Web和API服务器(25)

}

initialize

}

注意尽管你输入的消息你自己可以立即看到,但其他人只有刷新页面,或者输入自己的消息迫使messageList重新加载,才能看到你的消息。本文的最后一节将介绍怎样让所有人立即看到你的消息,而不需要手动刷新。

利用Websockets实时更新页面

推送更新的概念和简单:每次提交新消息后,就将消息”推送"到所有监听中的浏览器上,而不是等待浏览器刷新并“拉取”更新后的数据。实现这一目的有多种方法。本文我们使用Websockets。

Websockets可以让浏览器和服务器在正常的HTTP请求-响应流之外互相发送消息。连接一旦建立,任何一方都可以在任何时间发送消息,消息可以包含任意字符串或任意字节。

我们要实现的流程如下:

网站加载后,浏览器建立到服务器的websocket连接连接建立后,浏览器将发送消息"0"到服务器,表明它已准备好接收更新服务器将响应初始的txt,其中包含所有已经渲染的消息,以及一个index,表示当前的消息计数每当收到消息时,浏览器就会将最后看到的index发送给服务器,然后等待新消息出现,再按照步骤3进行响应在服务器上实现这一点的关键就是保持所有已打开的连接的集合:

推荐阅读