在Windows Azure上运行Fleck(或任何)Websocket服务器

时间:2012-02-07 13:27:18

标签: c# azure websocket

我想从Azure中的一个辅助角色运行一个WebSocket服务器。

这在模拟器上本地工作正常,但是第一次运行套接字服务器时会出现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上实现websockets时面临这一点的任何人;

  1. 如果不在端口80或8080上,您的防火墙可能会拒绝您的连接,因此请为其创建一个单独的部署。

  2. 必须将端点设置为TCP而不是HTTP才能创建正确的防火墙规则。 (见图)

  3. Endpoint Configuration

2 个答案:

答案 0 :(得分:8)

仅为了试用,为什么不将输入Endpoit从“http”更改为“tcp”协议。并明确将本地端口设置为8080(在您的情况下是)。此外,您必须记住,Windows Azure负载均衡器会终止任何闲置超过60秒的连接,因此您可能希望实施某种“ping”解决方案以保持连接处于打开状态。

答案 1 :(得分:0)

您可能想看一下Steve Marx(@smarx)在how to run node.js on Windows Azure上放在一起的介绍性视频。