长连接技术的应用

  • Post author:
  • Post category:IT
  • Post comments:0评论

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

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

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

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

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

相关链接:

* Netty:http://netty.io/

* iComet:https://github.com/ideawu/icomet

Related posts:

  1. 构建C1000K的服务器(2) – 实现百万连接的comet服务器
  2. 150行C代码的comet服务器
  3. 谈谈Facebook的聊天系统架构
  4. nginx-push-stream-module 笔记
  5. SSDB 现在已经支持 Java 语言了!

发表回复