Комета с длинным опросом bayeux ~ не удалось при использовании прокси

Я пытаюсь использовать Streaming API в SalesForce, который в основном реализован с использованием технологии Comet / Long Polling. В клиенте мы используем Java с jetty-http, bayeux-api, cometd-java-client.

Все работает отлично, если запустить приложение без прокси. Но если клиент использует сетевой прокси

A. он может выполнять аутентификацию пользователя

Б. длинное рукопожатие с опросом прошло успешно

C. meta / connect изначально имеет ошибку 402 (см. Журнал ниже), но в конечном итоге успешно

D. НИКОГДА не получайте ответа со стороны сервера

Любая мысль о том, что здесь происходит, и почему прокси-сервер вызвал это, даже если все запросы HTTP-соединения в A, B, C выше успешны?

[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"}

person iwan    schedule 12.07.2013    source источник
comment
То же самое. Я использовал mitmproxy для изучения другого приложения с помощью cometd, и буферизация должна была быть отключена, чтобы она работала должным образом. Вам также может потребоваться импортировать источник прокси-сервера в доверенные центры сертификации ssl, если приложение применяет проверку личности в TLS.   -  person Raymond Ferguson    schedule 23.12.2017


Ответы (1)


Возможно, прокси буферизует ответ. Бывает, например, с директивой nginx и proxy_buffering on.

person Artur Nowak    schedule 01.12.2016
comment
Привет, у меня такая же проблема с реализацией Grizzly Comet в Glassfish 4.1. Это единственный вопрос и ответ, который четко описывает проблему и возможное решение. Как отключить директиву proxy_buffering в Glassfish? Заранее спасибо. - person qualebs; 05.01.2018
comment
@qualebs это применимо, если у вас есть прокси перед Glassfish - person Artur Nowak; 07.01.2018