Я настроил lighttpd с mod_websocket, как описано в записи блога Дома Брэмли (за исключением того, что я использую BeagleBone Black с Debian Wheezy вместо rPi).
[Во время сборки lighttpd/mod_websocket меня спросили, не хочу ли я пропатчить сервер, и я ответил утвердительно.]
У меня есть брокер mosquito MQTT, работающий на том же хосте и публикующий сообщения на разные темы.
Когда я пытаюсь подключиться к брокеру с помощью клиента браузера через веб-сокет, я вижу, что все работает нормально с точки зрения обновления http до веб-сокета и пересылки запроса на подключение к mosquitto. Mosquitto получает запрос на подключение и принимает его. Однако ответ, возвращаемый браузеру, не включает заголовок Sec-Websocket-Protocol, повторяющий спецификатор субпрототипа mqttv3.1, который был в исходном запросе на обновление. Клиент правильно отклоняет этот ответ, и соединение закрывается.
Ошибка javascript из mqttws31.js:912: «Отправлен непустой заголовок Sec-Websocket-Protocol, но ответ не получен». С Wireshark я вижу, что это правда; ответ 101 Switching Protocols содержит заголовки Upgrade, Connection и Sec-Websocket-Accept, но больше ничего.
Мой конфигурационный файл mod_websocket определяет хост, порт, тип и подпрототип так же, как и в примере Дома, и я вижу из различных операторов отладки, что запрос правильно доходит до Mosquitto.
Может ли кто-нибудь предложить, как включить заголовок Websocket-Protocol в ответ? Это должно сработать, Дом написал в блоге сообщение о том, как он это сделал!