Я хотел бы запустить сервер WebSocket с рабочей роли в Azure.Запуск Fleck (или любой) Сервер веб-сервера на Windows Azure
Это нормально работает на эмуляторе, но при первом запуске сервера сокетов появляется запрос брандмауэра Windows.
Мне интересно, сможет ли кто-нибудь узнать, как преодолеть проблемы с подключением к розеткам на Azure.
реализация Моего сокет сервер: OnStart
var server = new WebSocketServer("ws://theappname.cloudapp.net:8080/");
server.Start(socket =>
{
socket.OnOpen =() =>
{
Trace.WriteLine("Connected to " + socket.ConnectionInfo.ClientIpAddress,"Information");
_sockets.Add(socket);
};
});
.... etc
Реализация клиента:
var socket = new WebSocket("ws://theappname.cloudapp.net:8080");
socket.onopen = function() {
status.html("Connection Opened");
};
socket.onclose = function() {
status.html("Connection Closed");
}
Изменение статуса в closed
через несколько секунд после загрузки страницы.
Моя конечная точка для роли работника ниже:
WebSocket Input http 8080 <Not Set>
я сейчас попытался связать с внутренним IP-адрес, используя следующие:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WebSocket"].IPEndpoint.ToString();
РЕШЕНИЕ
Ради кого-то напротив этого при осуществлении WebSockets на лазури;
Ваш брандмауэр, вероятно, откажется от вашего соединения, если не на порту 80 или 8080, поэтому создайте для него отдельное развертывание.
Конечная точка должна быть установлена в TCP, а не в HTTP, для правильного создания правил брандмауэра. (См изображения)
Просто ради испытания, почему бы вам не изменить свой входной вывод с протокола «http» на «tcp». И явно установите локальный порт на 8080 (что в вашем случае -). Также вы должны иметь в виду, что Windows Azure Load Balancer убьет любое соединение, которое простаивает более 60 секунд. –
astaykov
@astaykov - Ваш комментарий привел к решению, пожалуйста, напишите ниже, чтобы я мог + заверить вас. Благодарю. – f0x
@astaykov У вас есть полная реализация?Я пытаюсь заставить мое работать и никогда не делал этого раньше. – Yecats