在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时遇到这种情况的任何其他人的利益;
-
如果不在端口80或8080上,您的防火墙可能会拒绝您的连接,因此请为其创建单独的部署。
-
必须将端点设置为TCP而不是HTTP才能创建正确的防火墙规则。 (见图)
仅为了试用,为什么不将输入Endpoit从“http”更改为“tcp”协议。 并明确将本地端口设置为8080(在您的情况下是)。 此外,您必须记住,Windows Azure负载均衡器会终止任何闲置超过60秒的连接,因此您可能希望实施某种“ping”解决方案以保持连接打开。
您可能想看看Steve Marx(@smarx) 在Windows Azure上如何运行node.js的介绍性video。
- Azure配置设置和Microsoft.WindowsAzure.CloudConfigurationManager
- CloudBlob.DownloadToStream返回null
- 从Windows Phone将图像上载到Azure blob存储。 没有创造
- 从sql报告服务器下载XML文件
- Azure移动服务,HttpClient,授权
- 在windows azure中使用Redis实现进程外缓存
- Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential不带2个参数?
- Azure存储相关的API是否参与System.Transactions?
- 使用TableServiceEntity将复杂对象插入到azure表中