NodeJS即时聊天

         最近在着手学习NodeJS相关技术,想为即将开始的职业生涯充点电。那么,问题来了?如何快速的学习一门新的语言,新的技术呢?记得在面试过程中我也经历过这样的面试题,当时面试一家游戏公司4399,作为一个只会java的程序猿去面试游戏公司,难度可想而知。但是语言永远只是工具,只要你有能力就有无限的可能。4399主要方向有Erlang/C++,为了掩饰自己不会C++的短板,果断忽悠面试官,对于Erlang,在校大学生都很陌生,我学习能力强,语言只是工具,重要的是编程思想和算法,跟同龄人比,我一定能较快的掌握Erlang,为公司创造价值。扒拉扒拉一顿胡扯,最后竟面试过了。罗嗦了半天,到底怎么学习呢?我个人的理解,首先要对语言、技术有个宏观的认识和感知,了解它解决的什么问题,做了什么事,可以试着动手跑一跑别人的简单的demo。其次,动手才是王道,在实践中求真知,简略了解常用的一些API之后,开始动手写自己的demo和用例,并逐渐了解熟悉其API,达到基本能用的程度。最后,开始全面学习其API,读相关文档或者源码,了解他的性能,优劣,做到知其然知其所以然。

        回归主题吧,从零开始学NodeJS,先熟悉了一下NodeJS的基本API,做了最简单的helloworld,在这个过程中推荐阿里员工写的七天学会NodeJS,相当经典,非常适合入门。本着动手实践的心态,我选择了用NodeJS实现一个比较经典的在线聊天室。网络聊天室在web1.0的时代就出现了,但当时技术支持比较有限,大都是通过浏览器插件BHO,JavaApplet,Flash实现的。如今HTML5技术风起云涌,通过websocket实现的网络聊天室变得非常简单。

一、websocket协议

          作为下一代的 Web 标准,HTML5 拥有许多引人注目的新特性,如 Canvas、本地存储、多媒体编程接口、WebSocket 等等。这其中有“Web 的 TCP ”之称的 WebSocket 格外吸引开发人员的注意。WebSocket 的出现使得浏览器提供对 Socket 的支持成为可能,从而在浏览器和服务器之间提供了一个基于 TCP 连接的双向通道。Web 开发人员可以非常方便地使用 WebSocket 构建实时 web 应用,开发人员的手中从此又多了一柄神兵利器。

实时 Web 应用的窘境
        Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事,但是对于那些实时要求比较高的应用来说,比如说在线游戏、在线证券、设备监控、新闻在线播报、RSS 订阅推送等等,当客户端浏览器准备呈现这些信息的时候,这些信息在服务器端可能已经过时了。所以保持客户端和服务器端的信息同步是实时 Web 应用的关键要素,对 Web 开发人员来说也是一个难题。在 WebSocket 规范出来之前,开发人员想实现这些实时的 Web 应用,不得不采用一些折衷的方案,其中最常用的就是轮询 (Polling) 和 Comet 技术,而 Comet 技术实际上是轮询技术的改进,又可细分为两种实现方式,一种是长轮询机制,一种称为流技术。
        综合这几种方案,您会发现这些目前我们所使用的所谓的实时技术并不是真正的实时技术,它们只是在用 Ajax 方式来模拟实时的效果,在每次客户端和服务器端交互的时候都是一次 HTTP 的请求和应答的过程,而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量,而且这些方案中客户端和服务器端的编程实现都比较复杂,在实际的应用中,为了模拟比较真实的实时效果,开发人员往往需要构造两个 HTTP 连接来模拟客户端和服务器之间的双向通讯

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值