Pywebsocket комнаты или концепция темы

Я экспериментирую с различными способами доставки данных на некоторые страницы HTML5 через MQTT.

Я рассмотрел Node.js вместе с Socket.IO, и это кажется хорошим решением, поскольку у Socket.IO есть "комната". понятие, которое легко переводится в "тему" MQTT.

Мне любопытно, есть ли у pywebsocket такая концепция, которая позволила бы мне использовать один и тот же обработчик websocket для нескольких страниц без отправки одних и тех же данных на все страницы.

Я просмотрел pywebsocket кодовую страницу Google вместе с несколько примеров, но мне не удалось найти никакой информации, которая допускала бы такое поведение. Если у кого-то есть информация по этому поводу, буду очень рад :)


person span    schedule 23.03.2013    source источник


Ответы (1)


Хотя я не могу дать вам прямого намека на то, как перевести концепцию комнаты Socket.IO в MQTT, вы можете взглянуть на Mosquitto.js, который позволяет легко устанавливать соединения MQTT через веб-сокеты из браузера, которые ведут себя очень похоже на настоящие веб-сокеты. При таком подходе каждая открытая страница устанавливает уникальное соединение с брокером MQTT. Таким образом, вы даже можете подписаться на разные темы в зависимости от некоторых условий на стороне клиента.

Небольшой пример кода:

  var mqttSocket = new Mosquitto();

  mqttSocket.onconnect = function(rc){
    console.log("Connection established");
  };

  mqttSocket.ondisconnect = function(rc){ 
    console.log("Connection terminated");
  };

  mqttSocket.onmessage = function(topic, payload, qos){
    console.log("Message received " + topic + ":" + payload);
  }

  mqttSocket.connect("ws://yourserver:8080"); 
  mqttSocket.subscribe('some/topic', 0);

Поскольку встроенная поддержка соединений Websocket еще не реализована ни в одном брокере MQTT, на стороне сервера требуется небольшое количество программного обеспечения, которое соединяет соединение Websocket с брокером MQTT.

Разработчик Mosquitto.js рекомендует для этой задачи использовать собственный модуль mod_websocket для веб-сервера Lighttpd. Однако в качестве альтернативы вы можете попробовать WSS, который преобразует любое соединение Websocket в произвольный другой порт TCP с минимальными накладными расходами

Что касается приведенного выше примера, вы должны подключить mqttSocket к адресу и порту, где экземпляр WSS прослушивает входящие соединения. После этого WSS будет настроен на переадресацию входящих соединений выбранному вами брокеру MQTT.

Отказ от ответственности: WSS был написан моим другом специально для подключения Mosquitto.js к экземпляру брокера Mosquitto MQTT.

Надеюсь, это поможет.

person BinaryBucks    schedule 28.03.2013
comment
Спасибо, я тоже изучал эти вещи и пришел к тем же выводам. Кажется, что на данный момент в pywebsocket нет концепции комнаты. Экспериментальные версии mosquitto на самом деле не будут делать то, на что я надеюсь, поскольку я не хочу запускать отдельный http-сервер. Спасибо за ваш обширный ответ, и, надеюсь, это поможет другим с той же проблемой, что и я. - person span; 01.04.2013