WebSocket <webSocket>
Übersicht
Das <webSocket>
Element gibt die Verwendung des WebSocketModule-Moduls mit ASP.NET 4.5 an, um das Schreiben von Serveranwendungen zu unterstützen, die über das WebSocket-Protokoll kommunizieren. Mit WebSocket können Sie eine vollduplexe Kommunikation über eine einzelne TCP-Verbindung bereitstellen, indem Sie einen Datenstrom von Nachrichten anstelle eines Bytestroms verwenden. Dies erleichtert das asynchrone Herstellen einer Verbindung mit Datenquellen in Cloudbereitstellungen.
Kompatibilität
Version | Hinweise |
---|---|
IIS 10.0 | Das <webSocket> Element wurde in IIS 10.0 nicht geändert. |
IIS 8.5 | Das <webSocket> Element wurde in IIS 8.5 nicht geändert. |
IIS 8.0 | Das <webSocket> Element wurde in IIS 8.0 eingeführt. |
IIS 7.5 | N/V |
IIS 7.0 | N/V |
IIS 6.0 | N/V |
Setup
Windows Server 2012 oder Windows Server 2012 R2
- Klicken Sie auf der Taskleiste auf Server-Manager.
- Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
- Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
- Erweitern Sie auf der Seite Serverrollen den Webserver (IIS), erweitern Sie den Webserver, erweitern Sie die Anwendungsentwicklung und wählen Sie dann WebSocket Protokoll aus. Klicken Sie auf Weiter.
. - Klicken Sie auf der Seite Features auswählen auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 8 oder Windows 8.1
- Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Starttaste und klicken Sie dann auf Systemsteuerung. - Klicken Sie in der Systemsteuerung auf Programme und dann auf Windows-Features aktivieren oder deaktivieren.
- Erweitern Sie Internetinformationsdienste, dann WWW-Dienste, dann Anwendungsentwicklungsfeatures, und wählen Sie anschließend WebSocket Protokoll aus.
- Klicken Sie auf OK.
- Klicken Sie auf Schließen.
Gewusst wie
So verwenden Sie die IWebSocketContext-API
Entwickler können die IWebSocketContext-API verwenden, um Anwendungen zu erstellen, die bidirektionale und vollduplexe Kommunikation zwischen Client und Server implementieren und Datenströme von Nachrichten anstelle von Bytes senden. Die IWebSocketContext-API macht die erforderlichen APIs zum Lesen/Schreiben von WebSocket-Daten verfügbar.
Wenn eine eingehende Anforderung als WebSocket-Anforderung akzeptiert und anschließend aktualisiert werden soll, muss der Handler den Antwortstatus als 101 festlegen. Es sollte eine IHttpResponse-Flush> initiieren, wodurch das IIS WebSocket-Modul ausgelöst wird, um die erforderliche Arbeit auszuführen, um die 101-Antwort an den Client zu senden.
Sobald die Antwort gesendet wurde, kann der Handler einen Zeiger auf das IWebSocketContext über die GetNamedContext-API von IHttpContext3 abrufen.
Weitere Informationen finden Sie unter IWebSocketContext-Schnittstelle.
Konfigurieren von webSocket
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 oder höher verwenden:
- Klicken Sie in der Taskleiste auf Server-Managerdann auf Tools und dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows 8 oder höher verwenden:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
- Klicken Sie auf Verwaltung und doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Wählen Sie im Bereich Verbindungen den Servernamen aus, um WebSocket für den Server zu konfigurieren, oder erweitern Sie Sites, und wählen Sie dann eine Website aus, um WebSocket für die Website zu konfigurieren, oder erweitern Sie eine Website, und wählen Sie dann eine Anwendung zum Konfigurieren von WebSocket für die Anwendung aus.
Doppelklicken Sie im Startbereich auf das Feature Konfigurations-Editor.
Wählen Sie für eine Website oder eine Anwendung entweder web.config oder applicationHost.config im Textfeld Von aus.
Wählen Sie system.webServer/webSocket im Textfeld Abschnitt aus.
Setzen Sie
enabled
auf True, um webSocket zu aktivieren, oder auf False, um webSocket zu deaktivieren. Legen Sie pingInterval und receiveBufferLimit auf die gewünschten Werte fest.Klicken Sie im Bereich Aktionen auf Übernehmen.
Konfiguration
Das <webSocket>
Element wird auf Server-, Standort- oder Anwendungsebene konfiguriert.
Attribute
Attribut | Beschreibung |
---|---|
enabled |
Optionales boolesches Attribut. Ermöglicht Serveranwendungen die Kommunikation über das WebSocket-Protokoll. Der Standardwert ist true . |
pingInterval |
Optionales timeSpan-Attribut. Das Intervall, in dem ein Ping über eine WebSocket-Verbindung gesendet wird. Der Standardwert ist 00:00:00 . |
receiveBufferLimit |
Optionales uint-Attribut. Die maximale Größe des Empfangspuffers für eine WebSocket-Verbindung. Der Standardwert ist 4194304 . |
Untergeordnete Elemente
Keine.
Konfigurationsbeispiel
Im folgenden Beispiel wird ein <webSocket-Element> gezeigt.
<system.webServer>
<webSocket
enabled="true"
receiveBufferLimit="4194304"
pingInterval="00:01:00">
</webSocket>
</system.webServer>
Beispielcode
Im folgenden Beispielcode wird <webSocket> für eine Website konfiguriert.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/webSocket /enabled:"True" /receiveBufferLimit:"4194304" /pingInterval:"00:00:10" /commit:apphost
Hinweis
Sie müssen unbedingt den Commitparameter auf apphost
festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.
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"