Partager via


WebSocket <webSocket>

Vue d’ensemble

L’élément <webSocket> spécifie l’utilisation du module WebSocketModule avec ASP.NET 4.5 pour prendre en charge l’écriture d’applications serveur qui communiquent via le protocole WebSocket. WebSocket vous permet de fournir des communications duplex complètes sur une seule connexion TCP à l’aide d’un flux de messages plutôt qu’un flux d’octets. Cela facilite la connexion aux sources de données de manière asynchrone dans les déploiements cloud.

Compatibilité

Version Notes
IIS 10.0 L’élément <webSocket> n’a fait l’objet d’aucune modification dans IIS 10.0.
IIS 8.5 L’élément <webSocket> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <webSocket> a été introduit dans IIS 8.0.
IIS 7.5 S/O
IIS 7.0 S/O
IIS 6.0 S/O

Programme d’installation

Windows Server 2012 ou Windows Server 2012 R2

  1. Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
  2. Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
  3. Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
  4. Dans la page rôles de serveur, développez serveur web (IIS), développez serveur web, développez développement d’applications, puis sélectionnez protocole WebSocket. Sélectionnez Suivant.
    Screenshot of the Application Development list showing WebSocket Protocol selected. .
  5. Dans la page Sélectionner des fonctionnalités, cliquez sur Suivant.
  6. Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
  7. Dans la page Résultats , cliquez sur Fermer.

Windows 8 ou Windows 8.1

  1. Dans l’écran d’accueil, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration. Dans Panneau de configuration, cliquez sur programmes et fonctionnalités, puis sur activer ou désactiver les fonctionnalités Windows.
  2. Développez Internet Information Services, développez World Wide Web Services, développez fonctionnalités de développement d’applications, puis sélectionnez protocole WebSocket.
    Screenshot showing the Application Development Features list with multiple selections and WebSocket Protocol highlighted.
  3. Cliquez sur OK.
  4. Cliquez sur Fermer.

Procédure

Comment utiliser l’API IWebSocketContext

Les développeurs peuvent utiliser l’API IWebSocketContext pour créer des applications qui implémentent des communications bidirectionnelles et entièrement duplex entre le client et le serveur, en envoyant des flux de messages au lieu d’octets. L’API IWebSocketContext expose les API nécessaires pour lire/écrire des données WebSocket.

Si une demande entrante doit être acceptée en tant que requête WebSocket et ultérieurement mise à niveau, le gestionnaire doit définir l’état de la réponse sur 101. Il doit lancer un vidage IHttpResponse->, ce qui déclenchera le module WebSocket IIS pour effectuer le travail nécessaire pour envoyer la réponse 101 au client.

Une fois la réponse envoyée, le gestionnaire peut obtenir un pointeur vers IWebSocketContext via l’API GetNamedContext3 de IHttpContext3.

Pour plus d’informations, consultez interface IWebSocketContext.

Guide pratique pour configurer webSocket

  1. Ouvrez le Gestionnaire des services Internet (IIS) :

    • Si vous utilisez Windows Server 2012 ou version ultérieure :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou version ultérieure :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire des services Internet (IIS).
  2. Dans le volet Connexions, sélectionnez le nom du serveur pour configurer WebSocket pour le serveur, ou développez Sites, puis sélectionnez un site pour configurer WebSocket pour le site, ou développez un site, puis sélectionnez une application pour configurer WebSocket pour l’application.

  3. Dans le volet Accueil, double-cliquez sur la fonctionnalité éditeur de configuration.

  4. Pour un site ou une application, sélectionnez web.config ou applicationHost.config dans la zone de texte À partir de.

  5. Sélectionnez system.webServer/webSocket dans la section zone de texte.

  6. Définissez enabled sur True pour activer webSocket ou False pour désactiver webSocket. Définissez pingInterval et receiveBufferLimit sur les valeurs souhaitées.

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

  7. Cliquez sur Appliquer dans le volet Actions.

Configuration

L’élément <webSocket> est configuré au niveau du serveur, du site ou de l’application.

Attributs

Attribut Description
enabled Attribut booléen facultatif.

Permet aux applications serveur de communiquer via le protocole WebSocket.

La valeur par défaut est true.
pingInterval Attribut timeSpan facultatif.

Intervalle auquel un test ping est envoyé via une connexion WebSocket.

La valeur par défaut est 00:00:00.
receiveBufferLimit Attribut uint facultatif.

Taille maximale de la mémoire tampon de réception pour une connexion WebSocket.

La valeur par défaut est 4194304.

Éléments enfants

Aucune.

Exemple Configuration

L’exemple suivant affiche un élément <webSocket>.

<system.webServer>
   <webSocket
      enabled="true" 
      receiveBufferLimit="4194304"
      pingInterval="00:01:00">
   </webSocket>
</system.webServer>

Exemple de code

L’exemple de code suivant configure <webSocket> pour un site.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/webSocket /enabled:"True" /receiveBufferLimit:"4194304" /pingInterval:"00:00:10"  /commit:apphost

Remarque

Vous devez vous assurer que le paramètre commit est défini sur lorsque vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier 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"