Share via


WebSocket <WebSocket>

Panoramica

L'elemento <webSocket> specifica l'uso del modulo WebSocketModule con ASP.NET 4.5 per supportare la scrittura di applicazioni server che comunicano tramite il protocollo WebSocket. WebSocket consente di fornire comunicazioni full duplex tramite una singola connessione TCP usando un flusso di messaggi anziché un flusso di byte. In questo modo è più semplice connettersi alle origini dati in modo asincrono nelle distribuzioni cloud.

Compatibilità

Versione Note
IIS 10.0 L'elemento <webSocket> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <webSocket> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <webSocket> è stato introdotto in IIS 8.0.
IIS 7,5 N/D
IIS 7.0 N/D
IIS 6.0 N/D

Installazione

Windows Server 2012 o Windows Server 2012 R2

  1. Sulla barra delle applicazioni fare clic su Server Manager.
  2. In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
  3. Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
  4. Nella pagina Ruoli server espandere Server Web (IIS), server Web, sviluppo di applicazioni, quindi WebSocket Protocol( Protocollo WebSocket). Fare clic su Avanti.
    Screenshot dell'elenco Sviluppo di applicazioni che mostra l'opzione Protocollo WebSocket selezionata. .
  5. Nella pagina Selezione funzionalità fare clic su Avanti.
  6. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  7. Nella pagina Risultati fare clic su Chiudi.

Windows 8 o Windows 8.1

  1. Nella schermata Start spostare il puntatore fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere Pannello di controllo. - In Pannello di controllo fare clic su Programmi e funzionalità, quindi fare clic su Attiva o disattiva funzionalità di Windows.
  2. Espandere Internet Information Services, servizi Web globale, funzionalità di sviluppo di applicazioni e quindi selezionare Protocollo WebSocket.
    Screenshot che mostra l'elenco Funzionalità di sviluppo di applicazioni con più selezioni e Protocollo WebSocket evidenziato.
  3. Fare clic su OK.
  4. Fare clic su Close.

Procedure

Come usare l'API IWebSocketContext

Gli sviluppatori possono usare l'API IWebSocketContext per creare applicazioni che implementano comunicazioni bidirezionali e completamente duplex tra client e server, inviando flussi di messaggi anziché byte. L'API IWebSocketContext espone l'API necessaria ai dati WebSocket di lettura/scrittura.

Se una richiesta in ingresso deve essere accettata come richiesta WebSocket e successivamente aggiornata, il gestore deve impostare lo stato della risposta su 101. Deve avviare un IHttpResponse-Flush>, che attiverà il modulo Iis WebSocket per eseguire il lavoro necessario per inviare la risposta 101 al client.

Una volta inviata la risposta, il gestore può ottenere un puntatore a IWebSocketContext tramite l'API GetNamedContext3 di IHttpContext3.

Per altre informazioni, vedere Interfaccia IWebSocketContext.

Come configurare webSocket

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o versione successiva:

      • Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o versione successiva:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni selezionare il nome del server per configurare WebSocket per il server oppure espandere Siti e quindi selezionare un sito per configurare WebSocket per il sito oppure espandere un sito e quindi selezionare un'applicazione per configurare WebSocket per l'applicazione.

  3. Nel riquadro Home fare doppio clic sulla funzionalità Editor di configurazione .

  4. Per un sito o un'applicazione, selezionare web.config o applicationHost.config nella casella di testo Da .

  5. Selezionare system.webServer/webSocket nella casella di testo Sezione .

  6. Impostare enabled su True per abilitare webSocket o False per disabilitare webSocket. Impostare pingInterval e receiveBufferLimit sui valori desiderati.

    Screenshot di una parte della schermata Dell'editor di configurazione con l'opzione abilitata evidenziata.

  7. Fare clic su Applica nel riquadro Azioni .

Configurazione

L'elemento <webSocket> è configurato a livello di server, sito o applicazione.

Attributi

Attributo Descrizione
enabled Attributo booleano facoltativo.

Consente alle applicazioni server di comunicare tramite il protocollo WebSocket.

Il valore predefinito è true.
pingInterval Attributo timeSpan facoltativo.

Intervallo in cui viene inviato un ping tramite una connessione WebSocket.

Il valore predefinito è 00:00:00.
receiveBufferLimit Attributo uint facoltativo.

Dimensioni massime del buffer di ricezione per una connessione WebSocket.

Il valore predefinito è 4194304.

Elementi figlio

Nessuno.

Esempio di configurazione

Nell'esempio seguente viene visualizzato un <elemento webSocket> .

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

Codice di esempio

Il codice di esempio seguente configura <webSocket> per un sito.

AppCmd.exe

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

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file 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"