IIS8 + Nodejs (zeit / pkg) + Socket.io - PullRequest
       87

IIS8 + Nodejs (zeit / pkg) + Socket.io

0 голосов
/ 29 апреля 2020

У меня есть двоичный файл 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, и он работает нормально, но в этом сценарии я должен использовать скомпилированный двоичный файл для достижения аналогичной цели в соответствии с требованием.

...