Может ли самостоятельно работать SignalR на Raspberry Pi?
Я хочу разместить веб-страницу на C#/mono/signalR на Raspberry Pi - возможно ли это?
Мне удалось написать решение клиент-сервер-клиент, в котором концентратор signalR размещен на ПК с IIS 8. Консольное приложение на pi подключается к концентратору сервера с помощью клиента C# signalR. На сервере asp.net также размещается страница "удаленного управления" для клиента браузера для отправки команд на пи, но теперь я хочу исключить ПК как требование и разместить все на пи.
1 ответ
TLDR
Длинная история
Мне удалось получить решение, работающее с Nancy, SignalR и веб- сервером на основе OWIN NoWin, запущенным из консольного приложения на Rasperry Pi (mono 3, hard float). Посмотрите проект RPi.Nancy в этом решении:
https://github.com/neutmute/RPi.Demo
По сравнению с чистым клиентом, подключенным к хосту IIS SignalR, пи как самодостаточный веб-сервер несколько медленнее. Ответ от ползунка диапазона, связанного с knockout.js, очень медленный и занимает несколько секунд, пока поток обновлений не завершит передачу на сервер после того, как он перестанет перемещаться на клиенте. Запуск того же самого сервера на ПК также демонстрирует некоторую задержку, но не такую медленную, как на Pi.
Во время работы самосмещенного сигнала R моно процесс потребляет 97%, когда слайдер перетаскивается и передает поток событий signalR. Этого не происходит, когда в режиме чистого клиента с IIS в качестве хаб-сервера, однако IIS-сервер испытывает высокую загрузку ЦП, когда происходит неистовое перетаскивание ползунка, поэтому возможно, что пи нужно простить за небольшую задержку.
Я также попробовал Katana в качестве веб-сервера, но он работал даже медленнее, чем NoWin.
Обратите внимание, что полностью автономное решение SignalR будет работать нормально, если отправлять только несколько нажатий здесь и там - задержка проявляется только при перетаскивании ползунка назад и вперед и создании непрерывного потока событий. Одним из решений может быть регулирование обновлений с ползунка с помощью привязок выбивки и снижение разрешения событий слайдов.
Также следует отметить, что SignalR, размещенный на pi, не может использовать веб-сокеты, поскольку они доступны только тогда, когда SignalR размещен на IIS 8. Вместо этого используется транспорт событий на стороне сервера. Это тот же транспорт, когда в режиме чистого клиента.