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
- Sulla barra delle applicazioni fare clic su Server Manager.
- In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
- 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.
- Nella pagina Ruoli server espandere Server Web (IIS), server Web, sviluppo di applicazioni, quindi WebSocket Protocol( Protocollo WebSocket). Fare clic su Avanti.
. - Nella pagina Selezione funzionalità fare clic su Avanti.
- Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
- Nella pagina Risultati fare clic su Chiudi.
Windows 8 o Windows 8.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.
- Espandere Internet Information Services, servizi Web globale, funzionalità di sviluppo di applicazioni e quindi selezionare Protocollo WebSocket.
- Fare clic su OK.
- 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
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).
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.
Nel riquadro Home fare doppio clic sulla funzionalità Editor di configurazione .
Per un sito o un'applicazione, selezionare web.config o applicationHost.config nella casella di testo Da .
Selezionare system.webServer/webSocket nella casella di testo Sezione .
Impostare
enabled
su True per abilitare webSocket o False per disabilitare webSocket. Impostare pingInterval e receiveBufferLimit sui valori desiderati.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"