У меня есть двоичный файл app.exe , созданный из Node JS с использованием инструмента zeit / pkg и успешно запущенный на Windows Server 2012 R2 с IIS8,
Веб-конфигурация, которую я использовал, выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\app.exe"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" />
<webSocket enabled="false" />
</system.webServer>
</configuration>
При такой конфигурации веб-сервер работает нормально, как и ожидалось, но проблема возникает при работе с socket.io websockets. В app.exe у меня есть встроенный сервер socket.io, и он может подключаться к клиентам socket.io с помощью транспорта websocket, когда я запускаю app.exe как самостоятельный процесс. При переносе в IIS я отключил веб-сокет IIS после официального заявления по ссылке здесь и wi sh, чтобы позволить app.exe обрабатывать сам поток веб-сокета.
Я пытался метод REWRITE для включения в web.config, что-то вроде ниже, но в ответ я получаю socket.io клиент получает код ответа 502 при подключении к серверу.
<rewrite>
<rules>
<rule name="Web Sockets Reverse Proxy" enabled="true" stopProcessing="true">
<match url="socket.io.+" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Rewrite" url="*" />
</rule>
</rules>
</rewrite>
У меня такой вопрос, можно ли использовать какие-либо методы или настройки для того, чтобы app.exe мог обрабатывать сам поток веб-сокетов? Любые советы или руководства приветствуются, спасибо.
PS: я достиг этого с IISNode, и он работает нормально, но в этом сценарии я должен использовать скомпилированный двоичный файл для достижения аналогичной цели в соответствии с требованием.