我想从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时面临这一点的任何人;
如果不在端口80或8080上,您的防火墙可能会拒绝您的连接,因此请为其创建一个单独的部署。
必须将端点设置为TCP而不是HTTP才能创建正确的防火墙规则。 (见图)
答案 0 :(得分:8)
仅为了试用,为什么不将输入Endpoit从“http”更改为“tcp”协议。并明确将本地端口设置为8080(在您的情况下是)。此外,您必须记住,Windows Azure负载均衡器会终止任何闲置超过60秒的连接,因此您可能希望实施某种“ping”解决方案以保持连接处于打开状态。
答案 1 :(得分:0)
您可能想看一下Steve Marx(@smarx)在how to run node.js on Windows Azure上放在一起的介绍性视频。