适用于Android聊天应用程序的MQTT /限制主题访问

时间:2015-06-01 09:19:50

标签: android chat mqtt mosquitto

我正在尝试使用MQTT为Android创建一个聊天应用程序,但是关于如何做到这一点的信息有限。

到目前为止,我已经设置了MQTT代理,但任何用户都可以收听并发布他们想要的任何主题(当然这不是聊天应用程序中的内容)。

我使用mosquitto作为我的经纪人,并在其文档中列出了这组功能:

  

使用以下格式的行添加主题访问:

     

topic [read|write|readwrite] <topic>

     

还可以基于模式替换来定义ACL   在主题内。表单与topic关键字相同,但是   使用模式作为关键字。

     

pattern [read|write|readwrite] <topic>

     

可用于替代的模式是:

%c to match the client id of the client

%u to match the username of the client
     

替换模式必须是该级别的唯一文本   层次结构。模式ACL适用于所有用户,即使&#34;用户&#34;关键词   以前已经给过。

     

示例:

     

pattern write sensor/%u/data

     

允许访问桥接连接消息:

     

pattern write $SYS/broker/connection/%c/state

到目前为止,我想过做的事情: pattern readwrite chat/%u/msg

但这会限制每个用户对自己的主题进行读/写,而这并不是预期的行为。

所以我的问题是:

有没有办法为主题设置动态权限?

如何在A-B-C之间的聊天中确保A-B-C的主题 A-B-C可以读写?

1 个答案:

答案 0 :(得分:1)

不使用ACL文件,但mosquitto支持ACL的插件系统

e.g。 https://github.com/jpmens/mosquitto-auth-plug/

这允许您将ACL存储在可以即时更新的数据库中