У меня есть приложение API и веб-приложение (для простоты на том же сервере - я буду делать материал CORS позже).SignalR - всегда понижен до отправленных сервером событий в Chrome/Firefox
- Windows Server 2012 с IIS 8.5
- WebSockets, установленные через "Программы и компоненты"
- Firewall выключен
АНИ использует Owin + signalr и имеет правильную инициализацию (обрезается его вниз, чтобы найти ошибку):
public void Configuration(IAppBuilder app)
{
GlobalHost.Configuration.TransportConnectTimeout = TimeSpan.FromSeconds(5);
app.MapSignalR();
app.UseWebApi(Startup.CreateConfiguration());
}
private static HttpConfiguration CreateConfiguration()
{
HttpConfiguration configuration = new HttpConfiguration();
configuration.MapHttpAttributeRoutes();
return configuration;
}
Все работает отлично, кроме connec к фактическим веб-гнездам. Каждый раз, когда клиент пытается установить соединение, происходит тайм-аут, и он переходит на SSE (или навсегда кадр/длительный опрос в IE). Я увеличил тайм-аут до 25 секунд, и те же симптомы возникают.
На клиенте, я постоянно получаю эту ошибку с протоколированием включено:
SignalR: Connecting to websocket endpoint 'ws://[myurl]'.
SignalR: Websocket opened.
SignalR: **webSockets timed out when trying to connect.**
SignalR: Closing the Websocket.
SignalR: Attempting to connect to SSE endpoint 'http://[myurl]'.
SignalR: EventSource connected.
SignalR: serverSentEvents transport selected. Initiating start request.
SignalR: The start request succeeded. Transitioning to the connected state.
Я попытался следующим направляющей, предоставленная командой signalR, и я не могу видеть, что я пропускаю.
Спасибо за помощь!
ОБНОВЛЕНИЕ: Я загрузил образец и запустил его как есть на сервере. В той же ситуации, поэтому это, скорее всего, настройка конфигурации сервера, которую я пропустил по пути. Я до сих пор не нашел то, что пропустил.
Вы пытались установить связь SignalR от вас машины Windows Server? Это может иметь какое-то отношение к сети.Возможно, есть прокси-сервер или что-то среднее между клиентом и сервером, который не поддерживает WebSockets. – halter73
Фантастический. Устранение всех этих проблем, и я забыл про простое правило проверки провода. Пожалуйста, сделайте это ответом, чтобы я мог его принять. – junkyspace
Команда SignalR состоит из политически назначенных псевдо-разработчиков. Код не имеет значения, только принадлежность к группе ПК. – LastTribunal