2015-09-01 1 views
1

Я размещаю приложение WebSockets (SignalR) на Azure VM, и при удаленном подключении я испытываю следующую ошибку 400 (Bad Request).SignalR: Ошибка WebSockets 400 на Azure Virtual Machine

WebSocket connection to 'ws://xxx.cloudapp.net/signalr/connect?transport=webSockets& 
clientProtocol=1.5&connectionToken=JMLk3b...&connectionData=%5B%7B%22name%22%3A%22 
dashboard%22%7D%5D&tid=10' failed: Error during WebSocket handshake: 
Unexpected response code: 400 

Этого не происходит при доступе к приложению локально внутри виртуальной машины.

Мое подозрение, что это проблема с прокси-сервером, как выделено в thesevariousarticles.

Однако я не могу найти никаких статей, указывающих, можно ли фактически размещать приложения WebSockets на Azure VM (я знаю, что они недавно включили WS on Azure Websites, но похоже, что виртуальные машины еще не имеют этой функции).

Любая помощь будет оценена по достоинству. Благодаря!

ответ

0

Проблема заключалась в том, что прокси-серверы (такие как Squid) использовали клиентскую сторону у разных интернет-провайдеров, а не для прокси-серверов на стороне Azure.

+0

У меня такая же проблема. Можете ли вы объяснить свое решение немного больше, пожалуйста? – CPA

+0

При установлении сетевого соединения между вашим клиентом (браузером) и сервером (хостом SignalR) могут быть другие сетевые устройства/серверы (такие как прокси-серверы), участвующие в этом процессе. Эти посредники облегчают обмен данными между клиентом и сервером. Некоторые из них, однако, еще не поддерживают протокол WebSockets. Поэтому, скорее всего, они считают, что трафик, проходящий через порт 80, является простым старым HTTP. Затем трафик WS, проходящий через порт 80, будет отклонен, что приведет к 400. Проблема, скорее всего, является прокси-сервером у вашего провайдера или хостинговой компании. –

+0

Попробуйте подключиться и отправить сообщение на этом сайте: http://www.websocket.org/echo.html. Если это не удается, вероятность того, что прокси-сервер вашего провайдера не поддерживает WebSockets. Если это произойдет, это либо проблема прокси-сервера на вашем хосте, либо возникнет проблема с вашей конфигурацией хоста SignalR. Вы можете использовать WireShark с обоих концов, чтобы посмотреть на трафик, протекающий по проводу. Это поможет вам увидеть, где вещи взрываются. –