1. 设计
聊天应用程序中最重要的活动是聊天室更新的分发,比如:Emma加入房间的事件,Michael发送消息“Hello!”。

聊天服务端可以使用回调将这些更新传递给客户端。仅依靠回调作为交付聊天更新手段的缺点是,聊天客户端必须使用Ice支持服务端行为的语言编写。例如,为了编写基于Web的聊天客户端,我们可以使用JavaScript或PHP,但PHP语言映射不包含服务端端运行时。
为了适应客户端语言映射的不同功能,我们的设计支持两种独立的交付模式:推和拉。推送模型使用回调传递更新,因此,使用此模型的客户端只是被动地等待聊天服务端通知其发生新事件。相比之下,拉模式要求客户端定期主动轮询的获得新的更新。

推模式是首选,因为它的更适合大规模的部署,所以,我们将它用于语言映射支持服务端运行时(C++,C#,Java,JavaScript,Objective-C和Python)的客户端。拉模型是我们PHP客户端的唯一选择。