共用方式為


WebSocket < webSocket>

概觀

元素 <webSocket> 會指定使用 WebSocketModule 模組搭配 ASP.NET 4.5,以支援透過 WebSocket 通訊協定通訊的伺服器應用程式。 WebSocket 可讓您使用訊息資料流程而非位元組資料流程,透過單一 TCP 連線提供全雙工通訊。 這可讓您更輕鬆地在雲端部署中以非同步方式連線至資料來源。

相容性

版本 備註
IIS 10.0 <webSocket> IIS 10.0 中未修改專案。
IIS 8.5 <webSocket> 在 IIS 8.5 中修改專案。
IIS 8.0 專案 <webSocket> 是在 IIS 8.0 中引進。
IIS 7.5 N/A
IIS 7.0 N/A
IIS 6.0 N/A

安裝程式

Windows Server 2012 或 Windows Server 2012 R2

  1. 在工作列上,按一下 [伺服器管理員]
  2. 伺服器管理員中,按一下 [管理]功能表,然後按一下 [新增角色和功能]。
  3. 在 [ 新增角色和功能 精靈] 中,按 [下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [ 下一步]。
  4. 在 [ 伺服器角色] 頁面上,依序展開 [Web 服務器] ([IIS) ]、[ Web 服務器]、[ 應用程式開發],然後選取 [WebSocket 通訊協定]。 按一下 [下一步] 。
    應用程式開發清單的螢幕擷取畫面,其中顯示已選取 WebSocket 通訊協定。 .
  5. 在 [選取功能] 頁面上,按一下 [下一步]
  6. 在 [確認安裝選項] 頁面上,按一下 [安裝]
  7. 在 [結果] 頁面上,按一下 [關閉]

Windows 8 或Windows 8.1

  1. 在 [開始] 畫面上,將指標全部移至左下角,以滑鼠右鍵按一下 [開始] 按鈕,然後按一下[主控台]。 - 在主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。
  2. 序展開 [Internet Information Services]、[ 萬維網服務]、[ 應用程式開發功能],然後選取 [WebSocket 通訊協定]。
    顯示 [應用程式開發功能] 清單的螢幕擷取畫面,其中已醒目提示多個選取專案和 WebSocket 通訊協定。
  3. 按一下 [確定]。
  4. 按一下 [關閉] 。

作法

如何使用 IWebSocketCoNtext API

開發人員可以使用 IWebSocketCoNtext API 來建立應用程式,以實作用戶端與伺服器之間的雙向和完全雙工通訊,傳送訊息資料流程,而不是位元組。 IWebSocketCoNtext API 會公開必要的 API 來讀取/寫入 WebSocket 資料。

如果將傳入要求接受為 WebSocket 要求,並後續升級,處理常式必須將回應狀態設定為 101。 它應該起始 IHttpResponse-Flush > ,這會觸發 IIS WebSocket 模組,以執行將 101 回應傳送給用戶端的必要工作。

一旦傳送回應,處理常式就可以透過 IHttpCoNtext3 的 GetNamedCoNtext API 取得 IWebSocketCoNtext 的指標。

如需詳細資訊,請參閱 IWebSocketCoNtext 介面

如何設定 webSocket

  1. (IIS) 管理員開啟 Internet Information Services

    • 如果您使用 Windows Server 2012 或更新版本:

      • 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
    • 如果您使用 Windows 8 或更新版本:

      • 按住Windows鍵,按字母X,然後按一下[主控台]。
      • 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
  2. 在 [ 連線 ] 窗格中,選取伺服器名稱以設定伺服器的 WebSocket,或展開 [網站 ],然後選取網站來設定網站的 WebSocket,或展開網站,然後選取應用程式來設定應用程式的 WebSocket。

  3. 在 [ 首頁] 窗格中,按兩下 [ 組態編輯器 ] 功能。

  4. 針對網站或應用程式,請在 [] 文字方塊中選取[web.config] 或[applicationHost.config]。

  5. 在 [區段] 文字方塊中選取system.webServer/webSocket

  6. 設定 enabledTrue 以啟用 webSocket 或 False 以停用 webSocket。 將 pingIntervalreceiveBufferLimit 設定為所需的值。

    [組態編輯器] 畫面的螢幕擷取畫面,其中已醒目提示。

  7. 在 [動作] 窗格中按一下 [套用]

組態

專案 <webSocket> 是在伺服器、月臺或應用層級設定。

屬性

屬性 描述
enabled 選擇性的 Boolean 屬性。

可讓伺服器應用程式透過 WebSocket 通訊協定進行通訊。

預設值是 true
pingInterval 選擇性 timeSpan 屬性。

透過 WebSocket 連線傳送 Ping 的間隔。

預設值是 00:00:00
receiveBufferLimit 選擇性 uint 屬性。

WebSocket 連線的接收緩衝區大小上限。

預設值是 4194304

子元素

無。

組態範例

下列範例會顯示 < webSocket > 元素。

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

範例程式碼

下列範例程式碼會< 設定網站的 webSocket >

AppCmd.exe

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

注意

使用AppCmd.exe設定這些設定時,您必須將 認可 參數 apphost 設定為 。 這會將組態設定認可至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"