Настраиваем клиент JavaScript¶
Откроем файл wwwroot/js/site.js и найдем место, где инициализируется объект connection. Заменим реализацию на следующее:
const connection = new signalR.HubConnectionBuilder()
.withUrl("/learningHub", {
transport: signalR.HttpTransportType.WebSockets | signalR.HttpTransportType.LongPolling,
headers: { "Key": "value" },
accessTokenFactory: null,
logMessageContent: true,
skipNegotiation: false,
withCredentials: true,
timeout: 10000
})
.configureLogging(signalR.LogLevel.Information)
.build();
вот какие здесь есть настройки1:
transport— какие транспорты поддерживает клиент. По умолчанию доступны все три транспорта, с приоритетом WebSockets;headers— заголовки, которые нужно добавить к запросу на подключение;
> [!warning] Внимание (от меня)
> В документации также сказано, что, цитирую “Note, setting headers in the browser will not work for WebSockets or the ServerSentEvents stream.” Видимо, в браузере передача заголовков не сработаетaccessTokenFactory— фабрика токенов аутентификации2;logMessageContent— нужно ли добавлять содержимое сообщений в логи;skipNegotiation— если используется WebSocket в качестве транспорта, эта опция позволяет пропустить предварительный этап. Иначе не используется;withCredentials— если задано, данные входа будут отправлены при Кросс-доменном запросе(CORS)3timeout— таймаут для запросов HTTP. Не относится к LongPolling, SSE или WebSockets.
configureLogging — метод для конфигурации логирования. Можно передать уровень логирования в виде строки или константы, или передать кастомный ILogger.
После того, как объект connection создан, можно добавить следующие строки:
Здесь:
serverTimeoutInMilliseconds— таймаут ожидания сообщения от сервера. При превышении соединение считается разорванным и вызывается обработчикonclose;keepAliveIntervalInMilliseconds— интервал отправки пинг-сообщений на сервер. По умолчанию 15 секунд.
Последнее обновление :
16 июня 2023 г.
Дата создания : 10 февраля 2023 г.
Дата создания : 10 февраля 2023 г.