2015-10-28 60 views
0

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的組合。

enter image description here

enter image description here

enter image description here

回答

0

「髒」的解決方法,我發現現在是發送最後一條消息來刷新緩衝區,因爲我可以訪問服務器端的代碼。

請讓我知道如果你遇到這樣的問題,這可能是某些特定的Windows版本的SSL握手相關的事情,我不知道如何排除故障。