关于HTTP长连接的保持和断开

Comments(1)


Posted on 2013-03-07 19:03:17 network


最近在折腾一个长连接HTTP服务器的时候,积累了一些经验,下面总结出来:

  1. 最好使用支持HTTP/1.1的服务器,HTTP/1.1默认支持keep-alive,不需要像HTTP/1.0那样检测Connection: keep-alive.

  2. 浏览器的刷新也会断开长连接,如果在服务端有一些判断,要注意发生重复的可能。

  3. 在用户关闭浏览器的标签的时候,如果有多个页面和服务器保持长连接,服务器应检测对应的页面,并做清理。

  4. 将长连接服务器位于反向代理之后,应在反向代理服务器上设置保持keep-alive,如nginx。 这样可显著减少后端upstream服务器的压力。

  5. 检测用户刷新页面,如果刷新应询问用户是否真的刷新。这样可以减少一些误判断。 如WEBQQ在检测到用户刷新时,对应的动作是重新登录。 这样做是很好,可以预防用户在当前页面重复触发一些业务逻辑。

  6. 如因为业务需要将长连接和会话绑定(很多WEB IM都这样做),应注意清理服务端保持的长连接。 发送完消息,就应该删除这个长连接。因为浏览器ajax请求还会立即请求的。

前一篇: Nginx对后端upstream server启用keepalive 后一篇: tornado长连接断开的处理机制

Captcha:
验证码

Email:

Content: (Support Markdown Syntax)


vv78UzuhvTW  2015-09-11 21:12:29 From 221.178.182.86

Never seen a betetr post! ICOCBW