今天看到一个非常棒的及时通信的项目,分享给大家
服务端:[lhttp](https://github.com/fanux/lhttp)
40行代码聊天室[demo](https://github.com/fanux/lhttp-web-demo)
基本上写一个聊天室服务端一行代码不用写,客户端写极少量的代码就可以了。
比较值得一提的是作者的想法非常好,通信协议有点类似http协议,这样可扩展性就比较好,整个服务端都可以轻松定制的,作者实现和一些非常重要的首部过滤器,如订阅和发布。
如果说http协议是定位资源的,那lhttp最大的用处就是传输命令。是基于websocket协议的。
最让我喜欢的是订阅与发布,如:
通过websocket发送这样一条字符串:
"LHTTP/1.0 command\r\nsubscribe:channel_test\r\n\r\n"
就代表这个链接订阅了channel_test通道,假设又有其他客户端发送了这样一条字符串:
"LHTTP/1.0 command\r\npublish:channel_test\r\n\r\nhello"
这样订阅都就能收到这条消息,消息体是hello。
这里的command和http的url很像,服务端可以根据命令注册处理器处理这个命令。客户端也可以类似处理,如命令可以是 chat(聊天) enter_group(加入讨论组) add_friend(添加好友)等等,非常灵活。
还支持一些代理等特性,我就不多说了,大家自己去研究共同学习