Убедитесь, что на вашем IIS установлены и включены модули перезаписи URL и ARR (кэш маршрутизации запросов приложений).
В этом примере предположим, что ваш основной веб-сайт работает в домене example.com. (https и http - я обычно использую Letsencrypt для сертификата HTTPS). Я предполагаю, что узел с socket.io находится на том же сервере (поэтому я использую адрес 127.0.0.1 ниже) и на порту 4000.
Вам не нужно устанавливать сертификат SSL на узле, поскольку IIS будет шифровать связь для вас.
Теперь пришло время настроить модуль перезаписи URL (для всего сервера IIS, а не для вашего сайта).
Если вы хотите, чтобы websockets работал на http (ws) и https ( wss) также необходимо создать карту перезаписи. Я обычно создаю его как 'MapProtocol'.
Вам нужно 4 записи:
http -> http
https -> http
ws -> ws
wss -> ws
Затем создайте правило перезаписи входящего URL-адреса
Шаблон:
^socket\.io/([\s\S]*)
Условия: {HTTP_HOST} соответствует шаблону example.com {CACHE_URL} соответствует шаблону ^ (. +): //
Переменные сервера:
HTTP_Sec_WebSocket_Extensions -> none
Check 'replace the current value'
Действие: переписать
{MapProtocol:{C:1}}://127.0.0.1:4000/{R:0}
Check 'append the query string' and 'stop processing of subsequent rules'
Вот и все. Теперь вы можете проверить, работает ли правило, посетив: http://example.com/socket.io/socket.io.js
или
https://example.com/socket.io/socket.io.js, если у вас правильно настроен сертификат ssl на вашем сайте.