Как создать связь между браузером и приложением - PullRequest
3 голосов
/ 01 марта 2012

У меня большая проблема, и мне трудно ее решить.У меня есть изготовленный на заказ игровой контроллер, который выводит некоторые данные со своих датчиков через последовательную связь и подключается к ПК через последовательный порт.Я делаю callculation текущей позиции контроллера в сценарии Matlab.Я создаю веб-приложение, которое отображает данные (положение) устройства в веб-браузере, но не может решить, как подключить мое устройство к браузеру.Сценарий Matlab отправляет все данные о местоположении на порт UDP с частотой дискретизации 100 Гц (100 выборок в секунду).Мне нужно установить постоянную связь между веб-браузером и моим сценарием Matlab, чтобы я мог отображать данные.Я думаю об использовании веб-сокетов API.но он не "говорит" по UDP.Поэтому моя идея заключалась в том, чтобы как-то прочитать данные из UDP с пользовательского сервера Python, а затем создать веб-сокет на этом сервере Python и отправить данные, полученные через порт UDP, в веб-браузер.О, и было бы неплохо, если бы я мог общаться в обоих направлениях.Будет ли это работать?Есть идеи как это сделать?Как это обычно делается, я имею в виду, как можно подключить, скажем, какой-нибудь датчик температуры к веб-браузеру для отображения данных в режиме реального времени?

Любой ответ будет с благодарностью оценен.

Спасибо, Леон

1 Ответ

3 голосов
/ 01 марта 2012

Обратите внимание, что хотя протокол WebSockets построен на сокетах TCP, протокол WebSockets не является необработанными сокетами TCP. Соединение WebSockets имеет HTTP-дружественное рукопожатие (с некоторыми встроенными функциями CORS). WebSockets также основаны на сообщениях (а не на потоковой передаче, как TCP), поэтому каждое сообщение имеет пару байтов заголовков фреймов.

Вы можете посмотреть на websockify (заявление об отказе: я сделал websockify). Websockify - это сервер Python, который соединяет / выполняет прокси между WebSockets и обычными TCP-сокетами. Я не думаю, что было бы особенно сложно адаптировать его для обработки UDP-сокетов на сервере.

WebSockify (предназначенный для использования вместе с входящей в состав библиотекой include / websock.js) поддерживает двоичные данные даже в более старых версиях протокола Hixie. Это позволяет ему работать с устройствами iOS (iPhone, iPad), которые все еще поддерживают только старую версию протокола.

...