我想在 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>
我现在尝试使用以下命令绑定(bind)到内部 IP 地址:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WebSocket"].IPEndpoint.ToString();
解决方案
为了在 Azure 上实现 Websocket 时遇到此问题的其他人;
如果不在端口 80 或 8080 上,您的防火墙可能会拒绝您的连接,因此请为其创建单独的部署。
端点必须设置为 TCP 而不是 HTTP,才能创建正确的防火墙规则。 (见图)
最佳答案
只是为了试用,为什么不将输入端点从“http”协议(protocol)更改为“tcp”协议(protocol)。并明确将本地端口设置为 8080 (在您的情况下是 )。另外,您还必须记住,Windows Azure 负载均衡器会终止任何空闲时间超过 60 秒的连接,因此您可能需要实现某种“ping”解决方案来保持连接打开。
关于c# - 在 Windows Azure 上运行 Fleck(或任何)Websocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177089/