WebSocket <webSocket>
Общие сведения
Элемент <webSocket>
задает использование модуля WebSocketModule с ASP.NET 4.5 для поддержки написания серверных приложений, взаимодействующих по протоколу WebSocket. WebSocket позволяет обеспечить полнодуплексную связь по одному TCP-подключению, используя поток сообщений, а не поток байтов. Это упрощает асинхронное подключение к источникам данных в облачных развертываниях.
Совместимость
Версия | Примечания |
---|---|
IIS 10.0 | Элемент <webSocket> не был изменен в IIS 10.0. |
IIS 8,5 | Элемент <webSocket> не был изменен в IIS 8.5. |
IIS 8,0 | Элемент <webSocket> появился в IIS 8.0. |
IIS 7,5 | Н/Д |
IIS 7.0 | Н/Д |
IIS 6,0 | Н/Д |
Настройка
Windows Server 2012 или Windows Server 2012 R2
- На панели задач щелкните Диспетчер сервера.
- В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
- В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
- На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, узел Разработка приложений, а затем выберите Протокол WebSocket. Щелкните Далее.
. - На странице Выбор компонентов нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows 8 или Windows 8.1
- На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления. — В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
- Разверните узел Службы IIS, Веб-службы, Функции разработки приложений, а затем выберите Протокол WebSocket.
- Нажмите кнопку ОК.
- Щелкните Закрыть.
Инструкции
Использование API IWebSocketContext
Разработчики могут использовать API IWebSocketContext для создания приложений, реализующих двунаправленные и полностью дуплексные связи между клиентом и сервером, отправляя потоки сообщений вместо байтов. API IWebSocketContext предоставляет необходимые API для чтения и записи данных WebSocket.
Если входящий запрос должен быть принят как запрос WebSocket и впоследствии обновлен, обработчик должен задать состояние ответа 101. Он должен инициировать IHttpResponse-Flush>, который активирует модуль IIS WebSocket, чтобы выполнить необходимую работу по отправке ответа 101 клиенту.
После отправки ответа обработчик может получить указатель на IWebSocketContext с помощью API GetNamedContext3.
Дополнительные сведения см. в разделе Интерфейс IWebSocketContext.
Настройка webSocket
Откройте диспетчер служб IIS:
Если вы используете Windows Server 2012 или более поздней версии:
- На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
Если вы используете Windows 8 или более поздней версии:
- Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
- Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
В области Подключения выберите имя сервера, чтобы настроить WebSocket для сервера, или разверните узел Сайты , а затем выберите сайт для настройки WebSocket для сайта или разверните сайт, а затем выберите приложение для настройки WebSocket для приложения.
На панели Главная дважды щелкните компонент Редактор конфигурации .
Для сайта или приложения выберите web.config или applicationHost.config в текстовом поле От .
Выберите system.webServer/webSocket в текстовом поле Раздел .
Установите
enabled
значение True , чтобы включить webSocket, или False , чтобы отключить webSocket. Задайте для pingInterval и receiveBufferLimit нужные значения.Щелкните Применить в области Действия.
Конфигурация
Элемент <webSocket>
настраивается на уровне сервера, сайта или приложения.
Атрибуты
Атрибут | Описание |
---|---|
enabled |
Дополнительный логический атрибут. Позволяет серверным приложениям обмениваться данными по протоколу WebSocket. Значение по умолчанию — true . |
pingInterval |
Необязательный атрибут timeSpan. Интервал отправки связи через подключение WebSocket. Значение по умолчанию — 00:00:00 . |
receiveBufferLimit |
Необязательный атрибут uint. Максимальный размер буфера приема для подключения WebSocket. Значение по умолчанию — 4194304 . |
Дочерние элементы
Отсутствует.
Образец конфигурации
В следующем примере отображается <элемент webSocket> .
<system.webServer>
<webSocket
enabled="true"
receiveBufferLimit="4194304"
pingInterval="00:01:00">
</webSocket>
</system.webServer>
Пример кода
Следующий пример кода настраивает <webSocket> для сайта.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/webSocket /enabled:"True" /receiveBufferLimit:"4194304" /pingInterval:"00:00:10" /commit:apphost
Примечание
При использовании AppCmd.exe для настройки этих параметров необходимо обязательно задать для параметра фиксации значение apphost
. Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection webSocketSection = config.GetSection("system.webServer/webSocket", "Default Web Site");
webSocketSection["enabled"] = true;
webSocketSection["receiveBufferLimit"] = 4194304;
webSocketSection["pingInterval"] = TimeSpan.Parse("00:00:10");
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim webSocketSection As ConfigurationSection = config.GetSection("system.webServer/webSocket", "Default Web Site")
webSocketSection("enabled") = true
webSocketSection("receiveBufferLimit") = 4194304
webSocketSection("pingInterval") = TimeSpan.Parse("00:00:10")
serverManager.CommitChanges
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var webSocketSection = adminManager.GetAdminSection("system.webServer/webSocket", "MACHINE/WEBROOT/APPHOST/Default Web Site");
webSocketSection.Properties.Item("enabled").Value = true;
webSocketSection.Properties.Item("receiveBufferLimit").Value = 4194304;
webSocketSection.Properties.Item("pingInterval").Value = "00:00:10";
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set webSocketSection = adminManager.GetAdminSection("system.webServer/webSocket", "MACHINE/WEBROOT/APPHOST/Default Web Site")
webSocketSection.Properties.Item("enabled").Value = true
webSocketSection.Properties.Item("receiveBufferLimit").Value = 4194303
webSocketSection.Properties.Item("pingInterval").Value = "00:00:20"
adminManager.CommitChanges()
PowerShell
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/webSocket" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/webSocket" -name "receiveBufferLimit" -value 4194303
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/webSocket" -name "pingInterval" -value "00:00:20"