Запуск Fleck (или любого другого) сервера Websocket в Windows Azure - PullRequest
11 голосов
/ 07 февраля 2012

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

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


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

WebSocket Input http 8080 <Not Set>


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

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


РЕШЕНИЕ

Для тех, кто сталкивается с этим при внедрении веб-сокетов в Azure;

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

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

Endpoint Configuration

Ответы [ 2 ]

8 голосов
/ 09 февраля 2012

Просто для ознакомления, почему бы вам не изменить свою конечную точку ввода с «http» на «tcp» протокол. И явно установите локальный порт на 8080 (который в вашем случае есть). Также следует помнить, что Windows Azure Load Balancer может прервать любое соединение, которое простаивает более 60 секунд, поэтому вам может потребоваться реализовать какое-либо решение «ping» для поддержания соединения открытым.

0 голосов
/ 07 февраля 2012

Возможно, вы захотите взглянуть на это вводное видео, которое Стив Маркс (@smarx) написал для , как запустить node.js в Windows Azure .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...