前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
前言
整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。
開源項目
從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。
系列文章
web server apache tomcat11-01-官方文檔入門介紹
web server apache tomcat11-02-setup 啟動
web server apache tomcat11-03-deploy 如何部署
web server apache tomcat11-04-manager 如何管理?
web server apache tomcat11-06-Host Manager App -- Text Interface
web server apache tomcat11-07-Realm Configuration
web server apache tomcat11-08-JNDI Resources
web server apache tomcat11-09-JNDI Datasource
web server apache tomcat11-10-Class Loader
web server apache tomcat11-11-Jasper 2 JSP Engine
web server apache tomcat11-12-SSL/TLS Configuration
web server apache tomcat11-13-SSI
web server apache tomcat11-14-CGI
web server apache tomcat11-15-proxy
web server apache tomcat11-16-mbean
web server apache tomcat11-17-default-servlet
web server apache tomcat11-18-clusting 集群
web server apache tomcat11-19-load balance 負載均衡
web server apache tomcat11-20-connectors 連接器
web server apache tomcat11-21-monitor and management 監控與管理
web server apache tomcat11-22-logging 日誌
web server apache tomcat11-23-APR
web server apache tomcat11-24-Virtual Hosting and Tomcat
web server apache tomcat11-25-Advanced IO and Tomcat
web server apache tomcat11-26-maven jars
web server apache tomcat11-27-Security Considerations
web server apache tomcat11-28-Windows Service
web server apache tomcat11-29-Windows Authentication
web server apache tomcat11-30-The Tomcat JDBC Connection Pool
web server apache tomcat11-31-websocket
web server apache tomcat11-32-rewrite
web server apache tomcat11-33-CDI
web server apache tomcat11-34-Ahead of Time compilation support
Tomcat WebSocket 技術文檔
概述
Tomcat 支持 RFC 6455 所定義的 WebSocket。
應用開發
Tomcat 實現了由 Jakarta WebSocket 項目定義的 Jakarta WebSocket 2.1 API。
有幾個示例應用程式演示瞭如何使用 WebSocket API。您需要查看客戶端的 HTML 代碼和伺服器端的代碼。
Tomcat WebSocket 特定配置
Tomcat 提供了一些針對 WebSocket 的特定配置選項。預計這些選項將隨著時間的推移被吸收到 WebSocket 規範中。
-
在阻塞模式下發送 WebSocket 消息時使用的寫超時預設為 20000 毫秒(20 秒)。可以通過設置附加到 WebSocket 會話的用戶屬性集中的屬性 org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUT 來更改此值。分配給此屬性的值應該是一個 Long 類型,表示要使用的超時時間(以毫秒為單位)。對於無限超時,請使用 -1。
-
會話關閉超時預設為 30000 毫秒(30 秒)。可以通過設置附加到 WebSocket 會話的用戶屬性集中的屬性 org.apache.tomcat.websocket.SESSION_CLOSE_TIMEOUT 來更改此值。分配給此屬性的值應該是一個 Long 類型,表示要使用的超時時間(以毫秒為單位)。小於或等於零的值將被忽略。
-
除了 Jakarta WebSocket API 的 Session.setMaxIdleTimeout(long) 方法外,Tomcat 還提供了更多控制會話因缺乏活動而超時的時間。設置附加到 WebSocket 會話的用戶屬性集中的屬性 org.apache.tomcat.websocket.READ_IDLE_TIMEOUT_MS 將在指定的毫秒數內未收到 WebSocket 消息時觸發會話超時。設置屬性 org.apache.tomcat.websocket.WRITE_IDLE_TIMEOUT_MS 將在指定的毫秒數內未發送 WebSocket 消息時觸發會話超時。這些可以分別或共同使用,可以與或不使用 Session.setMaxIdleTimeout(long)。如果未指定相關屬性,則將應用讀取和/或寫入空閑超時。
-
如果應用程式未為傳入的二進位消息定義 MessageHandler.Partial,則必須緩衝任何傳入的二進位消息,以便整個消息可以在單個調用註冊的 MessageHandler.Whole 以二進位消息形式傳遞。二進位消息的預設緩衝區大小為 8192 位元組。可以通過將 servlet 上下文初始化參數 org.apache.tomcat.websocket.binaryBufferSize 設置為所需的位元組數來更改此值。
-
如果應用程式未為傳入的文本消息定義 MessageHandler.Partial,則必須緩衝任何傳入的文本消息,以便整個消息可以在單個調用註冊的 MessageHandler.Whole 以文本消息形式傳遞。文本消息的預設緩衝區大小為 8192 位元組。可以通過將 servlet 上下文初始化參數 org.apache.tomcat.websocket.textBufferSize 設置為所需的位元組數來更改此值。
-
在使用 WebSocket 客戶端連接到伺服器端點時,建立連接期間的 IO 操作超時由所提供的 jakarta.websocket.ClientEndpointConfig 的 userProperties 控制。屬性為 org.apache.tomcat.websocket.IO_TIMEOUT_MS,以毫秒為單位的字元串形式表示超時時間。預設值為 5000(5 秒)。
-
在使用 WebSocket 客戶端連接到伺服器端點時,客戶端將遵循的 HTTP 重定向數量由所提供的 jakarta.websocket.ClientEndpointConfig 的 userProperties 控制。屬性為 org.apache.tomcat.websocket.MAX_REDIRECTIONS。預設值為 20。通過將值配置為零,可以禁用重定向支持。
-
在使用 WebSocket 客戶端連接到需要 BASIC 或 DIGEST 認證的伺服器端點時,必須設置以下用戶屬性:
- org.apache.tomcat.websocket.WS_AUTHENTICATION_USER_NAME
- org.apache.tomcat.websocket.WS_AUTHENTICATION_PASSWORD
可選地,可以僅在伺服器認證挑戰包含特定領域時,通過在可選用戶屬性中定義該領域,配置 WebSocket 客戶端僅發送憑據:
- org.apache.tomcat.websocket.WS_AUTHENTICATION_REALM
-
在通過要求 BASIC 或 DIGEST 認證的轉發代理(也稱為網關)連接到伺服器端點時,必須設置以下用戶屬性:
- org.apache.tomcat.websocket.WS_PROXY_AUTHENTICATION_USER_NAME
- org.apache.tomcat.websocket.WS_PROXY_AUTHENTICATION_PASSWORD
可選地,可以僅在伺服器認證挑戰包含特定領域時,通過在可選用戶屬性中定義該領域,配置 WebSocket 客戶端僅發送憑據:
- org.apache.tomcat.websocket.WS_PROXY_AUTHENTICATION_REALM
參考資料
https://tomcat.apache.org/tomcat-11.0-doc/web-socket-howto.html