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

我想从Azure中的worker角色运行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


我现在尝试使用以下内容绑定到内部IP地址:

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


为了在Azure上实现websockets时遇到这种情况的任何其他人的利益;

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

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

端点配置

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

您可能想看看Steve Marx(@smarx) 在Windows Azure上如何运行node.js的介绍性video。