如何使用Bottle和MQTT获得全双工websocket

时间:2016-01-20 03:50:58

标签: websocket bottle mqtt gevent

我试图获得一条通信线路"在使用MQTT进行消息传递的服务器应用程序和我希望实时查看消息并将消息发送回服务器端应用程序的网页之间。

我在服务器上使用mosquitto,Bottle和gevent,我希望尽可能简单。使用gevent我设法在greenlet中接收MQTT消息,将它们放入队列并将消息发送到websocket过程中的网页,如下所示:

while True:
    mqt = queue.get(True)
    ws.send(mqt)

我也可以将网页中的消息发送回服务器和MQTT(也是通过队列):

while True: 
    msg = ws.receive()
    queue2.put(msg)

但是我希望这两个循环在同一个websocket上同时工作。有没有办法将它们结合起来?例如,接收是否有超时?我想我可以使用两个独立的websockets,但如果我只用一个就可以做到这一点。

1 个答案:

答案 0 :(得分:2)

为什么不直接使用MQTT over Websockets将消息传递到页面?有许多代理支持Websockets,而paho JavaScript客户端允许订阅和发布消息