2013-07-12 44 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前面有代理的情况 –