我目前正在研究支持保持連接的多線程代理服務器。在處理來自Firefox瀏覽器的請求時,我看到一些奇怪的問題。我使用localhost:10001/http://url連接到本地代理,並且可以訪問此主機上的所有鏈接。過程如下。 1.創建一個套接字綁定到端口10001 2.接受連接,並且如果客戶端連接fork() 3.繼續處理客戶端請求作爲持久連接。HTTP代理服務器保持活動連接支持
現在的問題是,當我在Firefox中打開一個新的標籤具有不同的主機訪問第二URL使用本地主機:10001/http://url2,奇怪的是,該請求到達第一次連接期間創建了客戶端套接字連接。我最初認爲這可能是由於我的代碼,但後來我試圖用telnet做同樣的事情,所有的新連接都會創建一個單獨的進程。是否有任何具體的設置,使Firefox瀏覽器做到這一點?
感謝。但是我的代理需要同時爲多個連接提供服務。我爲一個請求使用HTTP/1.1保持活動狀態,並且它仍在處理中,但現在我也想要支持一個也是持久化的新請求。是否有解決方法,我可以阻止瀏覽器使用現有的TCP連接並創建一個新的.. –
@Embed_Programmer:瀏覽器通常只會重用現有的連接,如果它是空閒的,即這個連接的請求是完成。在任何其他情況下,它將打開新的連接或等待任何現有的閒置。如果您發現瀏覽器發送新的請求,而您認爲現有的請求沒有完成,那麼可能您的代碼確定請求結束是錯誤的。也可能是瀏覽器使用HTTP流水線技術,它允許同時打開同一連接上的多個請求。您可以通過僅發送HTTP/1.0響應來解決此問題。 –
Thanks.You是正確的我通過URL使用代理是不正確的。我現在在瀏覽器中配置了代理服務器,並且一些困擾我的錯誤已經得到糾正。謝謝你的幫助 –