也谈基于http的“服务器推”技术 – nodejs

最近项目要上一个消息实时推送的功能,类似微博的私信聊天,客户端计划还是用传统的ajax,http长轮询(http long polling)来实现。至于服务端就有点复杂,阻塞连接并轮询显然是一个比较笨的方法,比较靠谱的做法是能操作web服务器的连接句柄,有消息过来就立即返回给客户端并关闭连接,公司倒是有现成的方案,但成本较高,其他方案要想部署到生产环境需要大量的调研和实践才可以。

粗略研究了一下,发现nodejs比较适合做类似事情,事件机制,且服务器和处理程序合二为一,这样程序接收消息并操作客户端的连接就非常方便和简单。动手做了一个比较简陋的聊天室,可以在这里看看效果:http://resmx.com:8001

核心的代码就这两处:

  1. // 在客户端的连接句柄上定义一个事件,有消息过来就触发
  2. response.emit('push', msg);
  3.  
  4. // 监听之前定义的事件,触发后发送数据给客户端并关闭连接
  5. response.on('push', function (msg) {
  6.             this.end(msg));
  7. });

源代码: https://github.com/legendtired/pushchat

截图:

2 Comments »

  1. www.bollno.com said,

    October 25, 2012 @ 11:11 pm

    让美国警察于今后逮捕人说你有权保持沉默还有权阅读某某帖子要不要啊的好帖532170236jemrn

  2. 朱相玄片 said,

    December 8, 2013 @ 11:07 am

    杭州最好的夜场是杭州东方魅力www.dongfangmeili.cn

    杭州最好的ktv是哪儿?是杭州东方魅力www.dongfangmeili.cn
    杭州夜场招聘首选杭州东方魅力www.dongfangmeili.com.cn

    杭州最好的夜总会是杭州东方魅力www.dongfangmeili.com.cn

    杭州东方魅力官方网站欢迎你 联系电话:13666653761 官方微信:dongfangmeili

RSS feed for comments on this post

Leave a Comment