最近打算写个web IM应用

web IM应用最有前途的技术应该是WebSocket,这是HTML5的新标准,是未来的方向。但据说当前浏览器支持并不是很好。除了WebSocket,还有Server-Sent Events,Polling,Long Polling这些方案。综合考虑浏览器兼容性以及减少带宽消耗,选用Long Polling方案实现。

 

开始打算选用nginx+php实现。但对于long polling这种服务端会处理大量并发连接的情况,服务端采用事件驱动的异步架构更好些,php对这种异步事件驱动架构支持并不好。考虑到这一点,现在最火的就是nodejs了。其他还有一些lua、python、erlang的webserver也都可以,不过性能上以及社区支持上都没有nodejs好。再加上以前也用过nodejs,第一个版本先用nodejs搭建,如果有问题或者后续有时间,可以使用erlang再写个,用lua和python再写个,分别比较测试一下。

 

---------------------------------------

很可悲的发现,虽然以前努力学习过javascript,也用过nodejs,不过再看的时候,发现很多东西都忘了。这是以前学习东西后很快就扔掉的后果,也是不沉下心来一直学下去的后果。像lua语言,虽然也已经很久不看了,但很多东西仍然没有忘。为什么?以前学得比较深,专门看了它的编译器、解析器代码实现,专门研究了它没一条语句的底层实现,看到每条语句,自然就知道它后台发生了什么,心里比较踏实,自然就不会忘记了。

 

反观javascript,实际上一直对语言中的一些操作后台到底做了什么心里没底,实际上就是心里不踏实。而人的记忆对不踏实的东西一向是记不牢的,所以很快就忘了。比如javascript里的new xxx到底做了什么?函数中的this为什么对不同调用对象表现为不同的内容?这些如果看了javascript编译器和解析器的实现,估计就能够印象深刻了。

 

所以,这两天要抽时间好好研究一下nodejs的源码,否则过段时间很快就又忘掉了。

 

你可能感兴趣的:(Web)