看板 java 關於我們 聯絡資訊
※ 引述《byend (漫步)》之銘言: : 是的 我寫了個小測試..證明是 Chrome/Firefox 沒有發出新的連線需求. : 方法如下: 先用 瀏覽器建立連線, 通常第二個或著第三個連線並沒有被建立.. : 接著用 telnet (Ex: 透過 KKMAN) 連線到 Server, Server 還是有建立新的連線. : : 我猜. 瀏覽器 可能有些偵錯/暫存機制...並免重複建立連線之類的. : : 如果你要用 Http Protocol, 還是建議你找 Apache HttpClient 之類的 : 來幫你處理 Http Header, 寫起來會簡潔一些. : : 最後, 我看了你前一篇的文章, 關於 Notify/Wait 部分. : 有個建議. synchronized(this) {wait();} : 綁定的對象 是 Client Handler Object 本身.. : 所以如果有十個 client handler object. : : 這十個 Thread 個別綁定在 十個 object 上. : 要 Notify 就不容易了.. 這部分目前是採用一個 List 記住每個 Object 然後逐一 notify... : : 先建一個 Object 當作 等待的對象. 比較容易解決. : 也就是我上面的例子中的 waitFlag. 恩,我在 javaworld 有比較詳細的把我找到問題的過程寫出來, 簡單來說就應該就是: Firefox 和 Chrome 有一種機制,他記得某 URL 還沒得到回應的話 要是在發出對同樣 URL 的 request 會等到之前那一個回應才會進行 也就是沒有發出第二條連線( check by WireShark) 解決的話其實也頗簡單,就是在 request 的 URL 後面加給他一些亂數就好: ex: var rnd=Math.floor(Math.random()*1000); $.get("http://localhost:8888/poll_"+rnd,{},function(data){ console.log(data); }); 這樣 Firefox 或 Chrome 會認定他們是不同的 URL (本來就不同XD) 底下是我用 VisualVM monitor Thread 的結果: Thread 的名稱是 [IP]{URL} http://ppt.cc/g~zU 先直接連兩次 poll , 等到兩個都回應後, 再連兩次有加 random 的 request (手殘按到三下) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.243.66 ※ 編輯: darkk6 來自: 140.116.243.66 (07/06 20:33)