Freigeben über


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

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. 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.
  4. 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.
    Screenshot of the Application Development list showing WebSocket Protocol selected. .
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  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.
  2. Erweitern Sie Internetinformationsdienste, dann WWW-Dienste, dann Anwendungsentwicklungsfeatures, und wählen Sie anschließend WebSocket Protokoll aus.
    Screenshot showing the Application Development Features list with multiple selections and WebSocket Protocol highlighted.
  3. Klicken Sie auf OK.
  4. 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

  1. Ö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.
  2. 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.

  3. Doppelklicken Sie im Startbereich auf das Feature Konfigurations-Editor.

  4. Wählen Sie für eine Website oder eine Anwendung entweder web.config oder applicationHost.config im Textfeld Von aus.

  5. Wählen Sie system.webServer/webSocket im Textfeld Abschnitt aus.

  6. 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.

    Screenshot of a portion of the Configuration Editor screen with enabled highlighted.

  7. 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"