2014-02-15

长连接技术的应用

Views: 21345 | 2 Comments

Web 技术太流行而且太强大了, 以至于我们在开发任何应用时, 都会想到利用 Web 技术. Apache, PHP, Java, HTTP, JSON, ... 只需要简单且流行的技术, 就能搭建一个系统.

但是, 对于另一类重要的需要服务器向客户端推送数据的应用, 传统的 Web 技术就不适用了, 因为 Web 的基础网络协议 HTTP 是请求响应模式, 一旦客户端不请求, 服务器就无法将数据推送给客户端. 而如果客户端的请求太过频繁(轮询), 那么就会对服务器造成巨大的压力.

为此, 需要有一种被称为长连接服务的技术. 长连接技术包含客户端和服务器两部分, 可以看成是传统的 Client-Server 架构. 而对应的长连接服务器, 就提供了网络连接管理和消息发送的功能. 比较有意思的是, 长连接技术也被应用到了 Web 领域, 实现所谓的"服务器推"技术, 也称 Comet 技术.

长连接技术主要用在自定义开发的客户端上, 但是在 Web 在也有很大的应用, 而且经常和自定义客户端融合. 例如, 微信网页版的登录功能, 就用到了长连接技术(再一次, 长连接技术在 Web 领域的应用被称为 Comet). 微信网页版的这个功能, 当你用手机扫了登录页面的二维码, 登录页面会立即变成登录状态.

虽然可以开发一个自定义的长连接服务器, 但是, 如果有成熟的长连接服务器, 直接使用也不错. 据我所知, 新浪微博的长连接服务器是基于开源的 Jetty 改造的, 不过 Jetty 是用 Java 开发的. 还有我开发的 iComet 服务器, 是用 C/C++ 开发的, 可以轻松的单机支持百万并发连接, 不仅被应用在网站上做网页版聊天功能的服务器, 还用来开发手机 App 的服务器.

相关链接:

* iComet: https://github.com/ideawu/icomet
* Jetty: http://www.eclipse.org/jetty/
* Netty: http://netty.io/

Related posts:

  1. HTTP 长连接技术 Comet
  2. 构建C1000K的服务器(2) – 实现百万连接的comet服务器
  3. iComet 的一个应用场景
  4. 轻量级 COMET 服务器 icomet 支持 EventSource(SSE)
Posted by ideawu at 2014-02-15 14:53:50 Tags:

2 Responses to "长连接技术的应用"

Leave a Comment