SignalR и Websockets на Mono

Я потратил много времени на очистку, пытаясь понять, почему перенос веб-дескрипторов не работает через signalr в моем приложении С# 4.5, запущенном на linux через mono 4.0.1.

Ссылки в моем проекте:

  • Microsoft.Owin.Host.HttpListener
  • Microsoft.Owin.Host.SystemWeb

Прямо сейчас, я пытаюсь понять, где узкое место, это препятствует работе веб-камер. Как я понимаю, SystemWeb - это, в основном, сам сервер, который использует Httplistener для прослушивания порта для HTTP-соединения, которое затем обрабатывает их до SystemWeb. Правильно ли я верю эту часть?

Может ли кто-нибудь указать мне в правильном направлении на открытую проблему или на трекер ошибок, где он сейчас находится в разработке? Из того, что я могу сказать, есть некоторые основные функции в http.sys из этого ответа, которые требуются и присутствуют в Windows 8. Существуют ли планы по реализации этого в моно? Я бы предпочел не получить некоторую стороннюю библиотеку и заставить ее работать в SignalR.

Ответ 1

Я сделал аналогичное исследование около 3 месяцев назад проекта с Angular 2 и Singnalr. Надеюсь, использование веб-сокетов не является существенным для вашего проекта.

Как вы можете видеть здесь, один из разработчиков Xamarin заявил, что он не работает, поскольку System.Web.WebSocket не реализован в Mono, и они не планируют его реализовать в наши дни.

Я считаю, что сейчас есть много работы с моно-стеком http, и, вероятно, необходимо стабилизировать, прежде чем мы увидим, что эта конкретная проблема решена.

Я предлагаю продолжить работу с текущим моно, поскольку signalr имеет резерв для веб-сайтов, это не будет большой проблемой, и когда он будет реализован в моно, вы можете просто просто обновить свой проект. С текущей политикой открытых источников MS я считаю, что это будет раньше, чем должно было быть.

Если вам нужна функция websocket для вашего проекта, тогда вы должны разветкить SignalR или найти раздвоенную версию, которая использует стороннее решение прямо сейчас. WebSocketListener действительно популярен и имеет больше возможностей.

Я бы посоветовал всем, кто заинтересован в fork SignalR и посмотреть, могут ли они использовать одну из этих реализаций web-приложений xplat, чтобы заставить ее работать в своей собственной вилке.

Обновить:

К сожалению, я не мог найти вилку SignalR с помощью WebSocketListener, но так как у нее много вилок, их трудно найти.

Насколько я знаю, команда Mono практически полностью останавливает реализацию и фокусируется на реализации ASP.Net vNext на Mono, поскольку она является открытым исходным кодом.