2013-07-12 2 views
2

기본적으로 Comet/Long Polling 기술을 사용하여 구현 된 SalesForce에서 Streaming API를 사용하려고합니다. 클라이언트에서는 jetty-http, bayeux-api, cometd-java-client와 함께 Java를 사용하고 있습니다.bayeux long 폴링 혜성 ~ 프록시 사용 중 오류가 발생했습니다.

프록시없이 응용 프로그램을 실행하면 모든 것이 완벽하게 작동합니다. 하지만 클라이언트 경우, 사용자 인증을

B. 긴 폴링 악수 할 수 A.

C. 메타은/초기 402 에러를 갖는 (로그 이하를 참조하여 연결 succesfull 인 네트워크 프록시를 사용)하지만 결국 성공

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 글래스 피어 앞에 프록시가있는 경우 적용됩니다. –