絮言
最近在学习Erlang,顺便写了一个socket.io server作为练练手,感受函数式/面向并发编程的好处。
毫无疑问,同样兼容最新的socket.io spec 1.0。
无论哪一种语言,从头开始构建HTTP协议支持,都是很痛苦的,站在巨人肩上,总是可以让你更专注于业务。Java社区可选择netty,Erlang社区可以选择非常轻量级的mochiweb和cowboy等,这里要感谢一下尤日华同学(http://www.cnblogs.com/yourihua/),特别热心,一一给我们分析了以上两个http框架的源码,我等新手获益良多。就是在其文章的帮助下,开始构建一个socket.io erlang server。
mochiweb,有些历史,已趋于稳定,但目前不支持websocket协议。
cowboy,模块/协议自由替换,使用二进制传输基本保证了低内存占用和快速传输,内置非常赞的dispatch URL分发器,内置对长连接的支持,目前使用的是0.6.1版本。推荐使用!
闲话少说,目前已经释出0.1版本,项目地址为:
https://code.google.com/p/erlang-scoketio/
项目介绍
Erlang 版本的socket.io服务器实现
1. 基于cowboy构建
检出地址: https://erlang-scoketio.googlecode.com/svn/socket.io_cowboy
兼容 socket.io-spec(https://github.com/LearnBoost/socket.io-spec) 1.0
支持xhr-polling/jsonp-polling/htmlfile/websocket/flashsocket等通讯协议
支持CJK语言,UTF-8编码下很少出现乱码
现在可以作为0.1版本释出,具有一个chat示范
2. 基于mochiweb构建
检出地址: https://erlang-scoketio.googlecode.com/svn/socket.io_mochiweb
兼容 socket.io-spec(https://github.com/LearnBoost/socket.io-spec) 1.0
仅支持xhr-polling/jsonp-polling/htmlfile等通讯协议
暂时精力有限,停止更新,假若有需要,可以进一步有偿商谈
3. 运行一个示范
一个实现
这里介绍一个聊天示范,看代码,很简单,也很短,才80行。
与Java相比,Erlang代码显得少多了。
其它
刚入门,项目代码写的有些草;您若慷慨,希望给些指点,谢谢 :))