Запуск Fleck (или любого другого) сервера Websocket в Windows Azure

Я хотел бы запустить сервер WebSocket с рабочей ролью в 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");
}

Статус меняется на закрыт через несколько секунд после загрузки страницы.


Моя конечная точка для рабочей роли ниже:

WebSocket Input http 8080


Теперь я попытался выполнить привязку к внутреннему IP-адресу, используя следующее:

RoleEnvironment.CurrentRoleInstance.InstanceEndpoints [" WebSocket "]. IPEndpoint.ToString ();


РЕШЕНИЕ

Ради того, чтобы кто-нибудь еще столкнулся с этим при реализации веб-сокетов в Azure;

  1. Ваш брандмауэр, вероятно, отклонит ваше соединение, если не на порте 80 или 8080, поэтому создайте отдельное развертывание для него.

  2. Конечная точка должна быть установлена ​​на TCP, а не на HTTP, чтобы были созданы правильные правила брандмауэра. (см. изображение)

Endpoint Configuration

11
задан cillierscharl 9 February 2012 в 09:36
поделиться