Как реализовать веб-сокеты на встроенном сервере устройств?
Я работаю с производителем электроники, чтобы встраивать системы управления на основе ЛВС в продукты. Идея состоит в том, чтобы обслуживать интерфейс конфигурации / управления системой через веб-браузер, чтобы клиентам никогда не приходилось устанавливать программное обеспечение. Мы можем общаться с устройством, отправляя и получая последовательные данные через встроенный модуль. Поскольку устройством также можно управлять с помощью интерфейса на передней панели, возникает проблема синхронизации удаленного веб-интерфейса с очень низкой задержкой. Кажется, что веб-сокеты или что-то вроде Push - это то, что нам нужно для обработки событий в реальном времени с сервера на клиенты.
Я использую сервер встроенных устройств Lantronix Mathport AR. Из коробки устройство будет обслуживать любые пользовательские HTML и Java-сервлеты / апплеты. У нас есть возможность установить легкий дистрибутив Linux, если нам нужна большая гибкость. Я не уверен, как реализовать какие-либо серверные приложения, так как устройство не работает под управлением стандартного Apache. Я верю, что он использует Боа.
Кто-нибудь может направить меня в правильном направлении, как это сделать?
3 ответа
Некоторая общая информация... Протокол WebSocket ( черновик спецификации здесь) представляет собой простой слой поверх TCP. Это означает, что, если у вас уже есть TCP-сервер для вашей платформы, внедрение WebSocket занимает всего несколько часов. Протокол определяет рукопожатие и два способа отправки фреймов данных.
Я настоятельно рекомендую вам начать с чтения спецификации на 39 страниц.
Как уже упоминал Тихауан, начните с чтения спецификации, а также отметьте, что некоторые изменения еще продолжаются, хотя веб-сокеты теперь более стабильны, чем 1 год назад.
Ключевым моментом для меня было требование, чтобы данные веб-сокета были полностью текстовыми в формате UTF-8, что прекрасно согласуется с определениями сообщений на основе JSON.
Наша система использует форму встроенного Linux, поэтому мы добавили и использовали следующие библиотеки:
- "libwebsockets" от: http://git.warmcat.com/cgi-bin/cgit/libwebsockets/
- "Янссон" от: http://www.digip.org/jansson/
Используя вышеперечисленное в качестве вспомогательных библиотек, мы создали внутренний облегченный "клиент / сервер", который позволял нашим другим программным модулям регистрироваться для определенных, применимых сообщений веб-сокетов и отвечать по мере необходимости. Работал отлично.
Удачи и наилучших пожеланий,
Я немного опоздал, но Mozilla опубликовала руководство под названием "Написание серверов WebSocket", которое буквально проведет вас через написание сервера веб-сокетов.
Вам уже нужно знать, как работает HTTP, и иметь средний опыт программирования. В зависимости от языковой поддержки может потребоваться знание TCP-сокетов. Цель данного руководства - представить минимальные знания, необходимые для написания сервера WebSocket.
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers