Подтвердить что ты не робот

.Net 4.5 Сервер WebSocket работает в Windows 7?

Я знаю, что класс ClientWebSocket для .Net 4.5 не поддерживается в Windows 7, но возможно ли создать сервер WebSocket, работающий в Windows 7, используя API.Net 4.5?

Чтобы сделать себя более ясным, в соответствии с здесь и здесь похоже, что часть на стороне сервера .Net 4.5 WebSocket-реализации должна поддерживаться даже в Windows 7, но при запуске HttpListener и попытке доступа к ней с помощью реализации с открытым исходным кодом WebSocket у меня возникла ошибка "Portocol not supported"

4b9b3361

Ответ 1

Поддержка HTTP.SYS в OS-уровне для веб-сайтов ограничена Win8/Windows Server 2012, и я согласен с этим глупо (это должно быть частью обновления Windows или самого пакета обслуживания IMO).

Это означает, что вы не можете напрямую использовать поддержку фреймворков для WebSockets из HttpListener или ASP.NET.

Но: что касается "возможно ли создание сервера WebSocket" - обязательно... но только если вы сами обрабатываете TCP/IP или используете стороннюю библиотеку для этого. Это немного раздражает, но не так плохо, как может показаться.

Изменить: после некоторой проверки я могу подтвердить, что серверные компоненты для этого не работают работают в Windows 7 (и т.д.); IsWebSocketRequest возвращает false , даже если - это запрос веб-сокета с заголовками Connection: Upgrade и Upgrade: websocket (и т.д.) (из сеанса Chrome, поскольку это помогает).

Я, однако, очень удивился, чтобы найти, что части на стороне клиента не работают, потому что: это проще и не (или, по крайней мере, не нужно) включить HTTP.SYS. Попытка использовать их бросает a PlatformNotSupportedException.

Ответ 2

Как говорит Марк, API-интерфейсы Microsoft не работают в Windows 7. Однако существует несколько библиотек с открытым исходным кодом, которые поддерживают WebSockets в Windows 7, а в некоторых случаях даже через платформу через Mono.

Ответ 3

Цитировать из документации System.Net.WebSockets:

Некоторые из классов в пространстве имен System.Net.WebSockets поддерживается в Windows 7, Windows Vista SP2 и Windows Server 2008. Однако единственные публичные реализации клиента и сервера WebSockets поддерживаются в Windows 8 и Windows Server 2012. классы и элементы класса в пространстве имен System.Net.WebSockets, которые поддерживаются в Windows 7, Windows Vista SP2 и Windows Server 2008 являются абстрактными классами. Это позволяет разработчику приложения наследовать и расширить эти абстрактные классы с фактической реализацией клиентские WebSockets.

Другими словами: DIY фактическая реализация.