1/ 安裝最新版本的tomcat(8.0.28)並在java 8上運行它(我使用的是1.8.0_45/64-位版本)。 我運行的Tomcat在Windows 7 64位Tomcat 8.0.x Websockets,SSL and Windows - > last frame delayed
2 /啓用在Tomcat SSL:通過創建密鑰庫和在server.xml文件在取消對HTTPS連接器 激活SSL,添加 keystoreFile =「」 keystorePass =「」 連接器。 FYI:這裏是我的連接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystorePass="password"
keystoreFile="/path/to/my/keystore" />
3 /安裝菲德勒(www.telerik.com/fiddler)或任何其他工具嗅探你的主機和服務器之間的通信,小提琴手應您的主機上運行。我用Fiddler做了我的屏幕截圖。
4/ 轉至tools/options/https並選中「啓用解密」。
5/ 使用Internet Explorer 11(鉻也適用,但因爲它壓縮的WebSocket流量就更難達到數據的8KB),訪問你的tomcat遠程使用HTTPS並打開示例應用程序在https://server:8443/examples/websocket/echo.xhtml
選擇「編程API」,點擊「連接」,然後在小提琴手上發送一條小測試信息
,雙擊websocket會話並查看websocket選項卡中的結果。
現在,嘗試發送20KB的大文本,您會看到回覆被分成8KB標記爲「Continuation」的幀。應該有一個標記爲「最終」的框架,在這一點上缺失。
發送另一個小消息,以便丟失丟失的幀。
重要:
如果我連接到Tomcat我的主機上本地運行的,我不重現此問題。 如果我不使用SSL,我不會重現此問題。
問題: - 爲什麼這樣的行爲,有沒有人遇到過同樣的事情? - 如何正確解決此問題? - 我試圖使Tomcat的日誌記錄,但什麼有趣的記錄:org.apache.tomcat.websocket.level = FINE
問題顯然是OS相關: 當Tomcat是在Windows 7上它不工作 當Tomcat在Windows 10上工作時 當Tomcat在Windows Server 2012 R2上工作時
簡而言之,這個問題是OS(某些版本的Windows)/ SSL和WebSockets的組合。