Play Framework看起来非常有趣,但是它鼓励在服务器端使用最少的状态。我的问题是如何轻松地将客户端状态与服务器状态同步?如果我想拥有服务器状态(例如在聊天应用程序的开发中),如何保持服务器状态以及同步客户端和服务器状态有多难?
对于标准的Web应用程序,状态保存在cookie,数据库或高速缓存中(请记住,高速缓存不可靠,如果高速缓存中不包含所需的数据,则必须可以从DB进行访问)。因此,在服务器端会话中什么也不会保持状态。
但是,就聊天类型应用程序的Play应用程序定义为无状态的情况而言,这里存在一些细微差别。如果您在Play的早期版本中(在Websocket支持之前)查看聊天应用程序,您会发现所有“消息”对象是存储在数据库中的聊天中的各个行。但是,在包含WebSocket支持的最新版本中,您会发现聊天状态存储在Singleton对象中,该对象将持续聊天的输入长度。
Play开发人员的观点是,Websocket通信,因此可以将整个聊天视为多次往返通信中的单个请求。因此,通过在服务器端将状态保持在单例中不会破坏无状态体系结构的规则。之所以如此,是因为一旦建立了websocket通信,沿着套接字的对话将始终在客户端和单个服务器之间进行,直到websocket关闭为止。
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |