Pergunta

Sem um proxy da web, Start().Wait() funciona bem.Rastreamento de conexão:

11:31:15.0221694 - null - ChangeState(Disconnected, Connecting)
11:31:17.1749694 - 054a636a-10dc-4d39-a77b-709639ea4e5f - SSE: GET http://<removed>/signalr/connect?transport=serverSentEvents&connectionToken=TFuti92AamDL%2FsFNOE8LF1N6T10bDcosIqdkmHbLxYpPwNtW9szZNHHDkrLPR1mFa0Pu%2FUgqmU6fkA%2Fh6iuOY9tTMfjfwqwa%2F5vpZk%2B9iuESgPD5OFYZelTG%2FZn16USK&connectionData=[{"Name":"myHub"}]
11:31:17.9549694 - 054a636a-10dc-4d39-a77b-709639ea4e5f - ChangeState(Connecting, Connected)

Mas atrás de um proxy da web, ele expira ou retorna após um longo período (4-5 minutos) se TransportConnectTimeout Está melhorado.Rastreamento de conexão:

05:04:05.4397657 - null - ChangeState(Disconnected, Connecting)
05:04:06.1727657 - 7d8ed176-4ca7-461b-97bb-d32b2e71d950 - SSE: GET http://<removed>/signalr/connect?transport=serverSentEvents&connectionToken=Q0FllYmOPNl0%2BQqI643N%2Bzed2zuNAEvLywMLnqkPV4H6%2BPMaiwlrEYGJsNBvrG8QMWdnEJh%2B0qf5UBDj1rpp9JNktaISXa4vhwpK6KnUo32R6d4vBEgunh9Ju%2FRZTm%2Bu&connectionData=[{"Name":"myHub"}]
05:04:11.1737657 - 7d8ed176-4ca7-461b-97bb-d32b2e71d950 - Auto: Failed to connect to using transport serverSentEvents. System.TimeoutException: Transport timed out trying to connect
05:04:11.1837657 - 7d8ed176-4ca7-461b-97bb-d32b2e71d950 - LP Connect: http://<removed>/signalr/connect
05:04:11.8147657 - 7d8ed176-4ca7-461b-97bb-d32b2e71d950 - ChangeState(Connecting, Connected)
05:04:11.8217657 - 7d8ed176-4ca7-461b-97bb-d32b2e71d950 - LP Poll: http://<removed>/signalr/poll

Portanto, se estiver atrás do proxy da web, o SignalR não consegue se conectar ao protocolo SSE e volta para uma longa pesquisa e se conecta em cerca de 5 segundos, mas ainda assim Start().Wait() não retorna.

Então, como fazê-lo funcionar por trás de um proxy da web?Estou usando o SignalR versão 2.0.1.

Foi útil?

Solução

Aqui está uma solução alternativa:Em vez de esperar Start(), manusear o HubConnection.StateChanged evento.Este evento é disparado na hora certa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top