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
- 在工作列上,按一下 [伺服器管理員]。
- 在伺服器管理員中,按一下 [管理]功能表,然後按一下 [新增角色和功能]。
- 在 [ 新增角色和功能 精靈] 中,按 [下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [ 下一步]。
- 在 [ 伺服器角色] 頁面上,依序展開 [Web 服務器] ([IIS) ]、[ Web 服務器]、[ 應用程式開發],然後選取 [WebSocket 通訊協定]。 按一下 [下一步] 。
. - 在 [選取功能] 頁面上,按一下 [下一步]。
- 在 [確認安裝選項] 頁面上,按一下 [安裝]。
- 在 [結果] 頁面上,按一下 [關閉]。
Windows 8 或Windows 8.1
- 在 [開始] 畫面上,將指標全部移至左下角,以滑鼠右鍵按一下 [開始] 按鈕,然後按一下[主控台]。 - 在主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。
- 依 序展開 [Internet Information Services]、[ 萬維網服務]、[ 應用程式開發功能],然後選取 [WebSocket 通訊協定]。
- 按一下 [確定]。
- 按一下 [關閉] 。
作法
如何使用 IWebSocketCoNtext API
開發人員可以使用 IWebSocketCoNtext API 來建立應用程式,以實作用戶端與伺服器之間的雙向和完全雙工通訊,傳送訊息資料流程,而不是位元組。 IWebSocketCoNtext API 會公開必要的 API 來讀取/寫入 WebSocket 資料。
如果將傳入要求接受為 WebSocket 要求,並後續升級,處理常式必須將回應狀態設定為 101。 它應該起始 IHttpResponse-Flush > ,這會觸發 IIS WebSocket 模組,以執行將 101 回應傳送給用戶端的必要工作。
一旦傳送回應,處理常式就可以透過 IHttpCoNtext3 的 GetNamedCoNtext API 取得 IWebSocketCoNtext 的指標。
如需詳細資訊,請參閱 IWebSocketCoNtext 介面。
如何設定 webSocket
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或更新版本:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或更新版本:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,選取伺服器名稱以設定伺服器的 WebSocket,或展開 [網站 ],然後選取網站來設定網站的 WebSocket,或展開網站,然後選取應用程式來設定應用程式的 WebSocket。
在 [ 首頁] 窗格中,按兩下 [ 組態編輯器 ] 功能。
針對網站或應用程式,請在 [從] 文字方塊中選取[web.config] 或[applicationHost.config]。
在 [區段] 文字方塊中選取system.webServer/webSocket。
設定
enabled
為 True 以啟用 webSocket 或 False 以停用 webSocket。 將 pingInterval 和 receiveBufferLimit 設定為所需的值。在 [動作] 窗格中按一下 [套用]。
組態
專案 <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"