.Net 4.5 WebSocket Server, работающий на Windows 7?

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

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

2 ответа

Решение

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

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

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

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

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

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

Цитата из документации 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 фактическая реализация.

Другие вопросы по тегам