我想在Haskell中实现一个MQTT服务器。
我已经在Haskell中创建了一个HTTP REST服务器,并希望将一些MQTT端点添加到该服务器。例如,有一个端点……
经过一番调查,以下是我在Haskell中对MQTT的研究结果:
我找到的第一个图书馆是 http://hackage.haskell.org/package/mqtt-hs 。然而,它是错误的,不再维护。 我现在正在使用 http://hackage.haskell.org/package/net-mqtt ,效果很好。
我也明白我不需要创建MQTT服务器:我只需要开发一个客户端!我的MQTT客户端将在标准MQTT服务器(Mosquitto)上订阅,并接收在我的数据库中接收的数据。
MQTT的另一个痛点是身份验证/授权。我的服务器使用Keycloak进行访问控制,而Mosquitto使用静态ACL文件。我通过为MQTT开发授权代理解决了这个问题:代理位于Mosquitto前面并根据Keycloak决策过滤请求。