2013-07-12 33 views
2

我想在SalesForce中使用Streaming API,這基本上是使用Comet/Long Polling技術實現的。在客戶端,我們使用Java與jetty-http,bayeux-api,cometd-java-clientbayeux長輪詢彗星〜使用代理時失敗

如果我們在沒有代理的情況下運行應用程序,一切都可以正常工作。 但是,如果客戶端使用網絡代理

A.它是能夠做到的用戶認證

B.長輪詢握手succesfull

C.元/連接初始具有402錯誤(參考下面的日誌),但最終成功

D. 永遠不會從服務器端

任何以爲這裏發生了什麼,爲什麼代理任何迴應造成這種情況,即使上述A,B,C中的所有HTTP連接請求都成功了?

[12:23:50.504-HttpClient-21][CHANNEL:META_CONNECT]: {"id":"5","error":"402::Unknown client","successful":false,"advice":{"interval":500,"reconnect":"handshake"},"channel":"/meta/connect","clientId":"jj1ajqshe3lkkpp1rsiy5g30ppey"} 
[12:23:50.504-HttpClient-21][CHANNEL:META_CONNECT] Error : 402::Unknown client 
[12:23:51.760-HttpClient-23][CHANNEL:META_HANDSHAKE]: {"id":"6","minimumVersion":"1.0","supportedConnectionTypes":["long-polling"],"successful":true,"channel":"/meta/handshake","clientId":"ingkpdlgu6uy43m06ei30spqpl","version":"1.0"} 
[12:23:53.170-HttpClient-19][CHANNEL:META_CONNECT]: {"id":"7","error":"402::Unknown client","successful":false,"advice":{"interval":500,"reconnect":"handshake"},"channel":"/meta/connect","clientId":"ingkpdlgu6uy43m06ei30spqpl"} 
[12:23:53.170-HttpClient-19][CHANNEL:META_CONNECT] Error : 402::Unknown client 
[12:23:54.408-HttpClient-22][CHANNEL:META_HANDSHAKE]: {"id":"8","minimumVersion":"1.0","supportedConnectionTypes":["long-polling"],"successful":true,"channel":"/meta/handshake","clientId":"fr1r22f6au89xpm1lbucrp26fs27","version":"1.0"} 
[12:24:00.757-HttpClient-19][CHANNEL:META_CONNECT]: {"id":"9","successful":true,"advice":{"interval":0,"reconnect":"retry","timeout":110000},"channel":"/meta/connect","clientId":"fr1r22f6au89xpm1lbucrp26fs27"} 
[12:24:07.051-HttpClient-19][CHANNEL:META_CONNECT]: {"id":"10","successful":true,"channel":"/meta/connect","clientId":"fr1r22f6au89xpm1lbucrp26fs27"} 
[12:24:13.348-HttpClient-22][CHANNEL:META_CONNECT]: {"id":"11","successful":true,"channel":"/meta/connect","clientId":"fr1r22f6au89xpm1lbucrp26fs27"} 
[12:24:19.643-HttpClient-18][CHANNEL:META_CONNECT]: {"id":"12","successful":true,"channel":"/meta/connect","clientId":"fr1r22f6au89xpm1lbucrp26fs27"} 
[12:24:25.935-HttpClient-18][CHANNEL:META_CONNECT]: {"id":"13","successful":true,"channel":"/meta/connect","clientId":"fr1r22f6au89xpm1lbucrp26fs27"} 
[12:24:33.429-HttpClient-24][CHANNEL:META_CONNECT]: {"id":"14","successful":true,"channel":"/meta/connect","clientId":"fr1r22f6au89xpm1lbucrp26fs27"} 
+0

同樣在這裏。我正在使用mitmproxy來探索另一個使用cometd和緩衝的應用程序,爲了使它正常工作,必須禁用它。如果應用程序在TLS中強制執行身份驗證,則可能還需要將代理ca源代碼導入ssl可信CA. –

回答

0

可能是代理緩衝響應的情況。它發生在例如與nginx和proxy_buffering on指令。

+0

您好,我在這裏遇到與使用Glassfish 4.1的灰熊彗星相同的問題。這是清楚描述問題和可能的解決方案的唯一問題和答案。如何關閉Glassfish上的proxy_buffering指令?提前致謝。 – qualebs

+0

@qualebs適用於在Glassfish前面有代理的情況 –