采用http协议做IM拉取消息的流程设计

接手一个在线客服的项目,本质上就是一个 IM 项目。

第一个想到的是用 WebSocket,然而一些客观因素导致这个项目很难采用 WebSocket 来做。那么,就只好用 http 实现,并为此设计了如下流程:

如图,首先 Browser 端发起一个拉取消息的请求。Server 端收到请求后,立即查询是否有新消息,如查询到了新消息,则立即返回结果给 Browser 端。

Browser 端收到返回结果后,再次发起一个新的拉取消息的请求,如此往复进行。

若 Server 端接到拉取请求后,没有查询到新消息,则 Hold 住这个请求进程,同时设置一个时间阈值,比如5秒。

在这5秒内,Server 端反复查询是否有新消息,当发现了新消息后,则立即向 Browser 端返回结果同时结束掉进程。若始终都没有新消息,则在达到预设的时间阈值后,向 Browser 端返回一个通知,告知 Browser 端这次没有新消息。

在这个流程中,Browser 端发出请求后,可能会立即收到结果,也可能在5秒后得知没有新消息,不论是否有新消息,在得到 Server 端反馈后,都要立即再次发出请求。

阳光部落原创,更多内容请访问http://www.sunbloger.com/

预防注入的4条建议

1.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等;

2.不要仅仅验证数据的类型,还要验证其格式、长度、范围和内容;

3.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行;

4.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查;

阅读更多