1. 回话

偶尔,聊天客户端很可能会消失,而没有正式通知服务端它打算离开聊天室。发生这种情况的原因很多,如系统崩溃,网络连接丢失,编程错误或恶意企图浪费服务器资源。例如,聊天服务端必须累积每个客户端的状态,直到客户端轮询下一批更新为止。如果客户端意外终止,服务端将继续积累聊天更新,并最终耗尽内存,除非我们采取预防措施。

为了解决这个问题,聊天应用程序使用会话的概念来处理授权和资源回收的杂事。会话是由聊天服务端实现的一个Ice对象,充当客户端的聊天室网关。为了加入聊天,客户端必须首先请求一个新的会话。作为回复,客户端接收其会话对象的代理;所有的客户端与聊天室及其参与者的交互都通过这个代理进行。会话还充当服务端为客户端分配资源的存储库。会话销毁时,服务端可以轻松回收这些资源。

推送客户端(通常被动地等待回调通知)负责通过定期发送无害ping请求,或配置活动连接管理,以在连接上启用“心跳”消息来保持会话活动。这对于拉客户端不是必需的,因为客户端的轮询活动使会话保持活动状态,前提是轮询时间间隔比会话的到期超时要短。一个运行良好的客户也会在不再需要时销毁会话。如果客户忽略销毁会话,服务端会在一段时间不活动后自动销毁。下图描述了推客户端与聊天服务端会话的交互。

正如你所看到的,会话可以减轻服务器对有问题的客户端或网络造成的资源耗尽的问题。 此外,会话实施简单,运行时间短,使其成为在分布式环境中有效管理资源的理想选择。

Copyright © github.com/weiofcn 2017 all right reserved,powered by GitbookLast modified time: 2017-12-27 02:20:43

results matching ""

    No results matching ""