Недавно я обнаружил WebSockets и их возможное использование в моем проекте. В настоящее время я использую необработанные веб-сокеты, но я изучал возможность создания настраиваемой транспортной привязки / канала, который бы обрабатывал все и позволял мне размещать его в IIS.
Я начал работать над этим, но у меня возникают проблемы с выяснением, как заставить IIS пересылать мне соответствующие запросы. Я читал пример транспорта UDP от Microsoft, но он не размещает его так, как я, поэтому он не очень полезен в этом отношении. Пример создает UDP-сокет в самом коде WCF, что не похоже на правильный способ сделать это. Я мог бы сделать привязку вручную, создав порт для прослушивания, но тогда мне пришлось бы заново реализовать вещи, которые описаны в IIS / ASP.NET.
Поскольку WebSocket начинается как обычный HTTP-запрос, а затем переходит на протокол, аналогичный HTTP, мне нужно получить IIS, чтобы дать мне поток, из которого я могу читать и записывать.
Я использовал .NET Reflector, чтобы просмотреть webHttpBinding и посмотреть, как они это делают. Кажется, они используют httpapi.dll для P / Invoke HttpCreateRequestQueue. Это то, что я хочу?
Это очень похоже на webBindingSocket в том, что он генерирует клиентский прокси JavaScript, но я буду автоматически генерировать методы обратного вызова, чтобы сервер мог легко вызывать методы в браузере.
Пример:
http: // localhost / WebSocket.svc - Служба метаданных
http: // localhost / WebSocket.svc / jsdebug - клиентский прокси JavaScript
http: // localhost / WebSocket.svc / stream - где находится WebSocket
Извините, если мой вопрос кажется запутанным, но я просто смотрю на тонны кода, пытаясь выяснить, как он работает. По сути, я хочу упростить использование WebSockets в своем коде, вместо того, чтобы беспокоиться о сериализации сообщений на сервер и с сервера и вызове правильного метода, я собираюсь обработать все это в WCF.
Спасибо