我想在Azure中的工作者角色上运行WebSocket服务器。在Windows Azure上运行Fleck(或任何)Websocket服务器
在模拟器上可以很好地在本地工作,但第一次运行套接字服务器时会出现一个Windows防火墙提示。
我想知道是否有人会知道如何克服有关Azure套接字的连接问题。
我的socket服务器实现: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。 (见图片)
只是为了试用,为什么不将输入终点从“http”更改为“tcp”协议。并明确设置本地端口为8080(在你的情况下是)。另外,您必须记住,Windows Azure负载平衡器会终止任何闲置超过60秒的连接。 –
astaykov
2012-02-08 07:48:24
@astaykov - 您的评论导致解决方案,请在下面发布,这样我就可以+声誉。谢谢。 – f0x 2012-02-09 09:36:40
@astaykov你有完整的实现吗?我试图让我的工作,并从未这样做过。 – Yecats 2013-10-13 00:13:40