标签:web mqtt mosquitto websocket 服务器
最近公司开发项目,用到了推送技术,这里不分析各种推送技术的优劣了,网上内容一大堆,通过查看别人的对比资料以及实践,最后选择了mqtt这个推送协议。
mqtt既然是一个协议,自然就有它的实现了,相关的客户端和服务器端实现可以在这个网址下找到:https://github.com/mqtt/mqtt.github.io/wiki/software?id=software,这里服务器端实现我选择了mosquitto,客户端嘛就不止选择一个了,由于项目涉及到Android、ios以及mtk平台以及浏览器,因此每个平台客户端的选择也不一样。
推送,最核心的就是建立长连接,因此也有很多建立连接的方式,可以基于tcp,tls,wb等来建立长连接,这里比较惭愧,刚开始没有理解这里,因此在客户端编程时,只是傻乎乎的这样写:tcp://xxx.xxx.xxx:1883,却不知道这个tcp是什么意思,幸运的是在研究网页版的mqtt通信时,看到ws://xxx.xxx.xxx:8080才明白这个字段的含义,ws我想应该就是websocket的缩写了吧。既然建立连接有这么多方式,自然mqtt服务器端的实现要支持这些连接方式才行,刚开始以为mqtt服务器端的实现主要工作仅仅是管理连接和主题分发而已,其实远没有这么简单,我想支持各种连接方式也有一定的工作量吧。
由于项目之初并没有涉及到网页版的开发,为了快速实现(要支持tls还需要别的库一起编译才行),在安装mosquitto时,就只支持了tcp的连接方式,于是这个时候开发网页版连接自己部署的mqtt服务器就不行了,主要是服务器没有支持websocket的连接方式,不过这到不影响我们对库的选择,http://test.mosquitto.org/ws.html该页面下提供了一个公共的服务器地址可以让我们测试,查看它的js源码得知,他使用的端口是8080,并且他使用的js库也不是的前面说的库,这个自然不要紧了,只要是基于mqtt协议的实现,理论上都是能连接上mqtt服务器的,刚开始我写1883没有连接上...,所以成功连接上了,开心啊,这样的话,基本上就证明使用mosquitto也能搞定网页版的mqtt推送了,网页内容实时显示指日可待。
至于怎么样才能使mosquitto支持websocket的连接,这部分还需要研究一下,以后再补上这部分的内容。
关于mosquitto的配置,可以参考这篇文章,我是参考这篇文章成功的完成了编译安装:http://blog.chinaunix.net/uid-25885064-id-3539075.html,不过值得注意的时,在修改mosquitto.conf配置文件时,里面的桥接客户端的用户名必须要使用当前登录用户的名称,由于我是root用户登录,因此该字段配置成了root才能成功启动mosquitto。
标签:web mqtt mosquitto websocket 服务器
原文地址:http://blog.csdn.net/zhou_junhua/article/details/41847497