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

如何使用瓶子和MQTT获得全双工websocket,websocket,bottle,mqtt,gevent,Websocket,Bottle,Mqtt,Gevent,我试图在使用MQTT进行消息传递的服务器应用程序和希望实时查看消息并将消息发送回服务器端应用程序的网页之间建立“通信线路” 我在服务器上使用mosquitto、瓶子和gevent,我想让它尽可能简单。使用gevent,我成功地在greenlet中接收MQTT消息,将它们放入队列,并将消息发送到websocket过程中的网页,如下所示: while True: mqt = queue.get(True) ws.send(mqt) 我还可以像这样(也可以通过队列)将消息从网页发送回

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

我在服务器上使用mosquitto、瓶子和gevent,我想让它尽可能简单。使用gevent,我成功地在greenlet中接收MQTT消息,将它们放入队列,并将消息发送到websocket过程中的网页,如下所示:

while True:
    mqt = queue.get(True)
    ws.send(mqt)
我还可以像这样(也可以通过队列)将消息从网页发送回服务器和MQTT:


但是,我希望这两个循环在同一个websocket上同时工作。有没有办法把它们结合起来?例如,receive是否有超时?我想我可以使用两个单独的WebSocket,但如果我只能使用一个,那将是一种浪费。

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

好主意,尽管我不太喜欢我必须编译所有内容,因为mosquitto默认不支持websocket:)什么平台?现在,大多数预构建的二进制文件都应该包含WebSocket(除了我想修复的Fedora),我使用的是Ubuntu14.04LTS,刚刚意识到它是随MosQuito 0.15提供的。我编译并运行了1.4.4版。也许是时候更新我的服务器了,但我手头没有多少时间
while True: 
    msg = ws.receive()
    queue2.put(msg)