0

我正在寻找一些关于在运行 Windows Server 2003、R2 和 IIS6 的服务器上设置 MVC/XSockets 项目的指导。

我们的团队正在开发一个使用 XSockets 3.x 实时动态显示数据的 webapp。我们正在使用我们的时间输入系统在“仪表板”上显示当前时间输入。员工通过单独的应用程序输入他们的时间,仪表板应用程序应该显示最近的活动更新。

该项目是使用 MVC4 框架制作的。这在我的开发机器上进行测试时效果很好,与服务器分开。ws 服务器实例设置在 ws://xxxx:4502 上,其中 xxxx 是服务器的 IP。XSockets 组件集成在同一个项目中。

将我的本地项目推送到服务器并进行一些设置后,除了 XSockets 功能外,一切正常。不能从服务器外部访问 XSockets 服务器。当我从服务器内部进行测试时,即打开浏览器并转到 web 应用程序时,它可以正常工作,就像在我的开发机器上一样。

我已经尝试按照 xsockets.net 上概述的自定义配置设置,但我对如何定义 ws 服务器实例有点困惑。我使用服务器的 IP 吗?本地主机 IP (127.0.0.1)?我都试过了,但它不会工作。我尝试添加此自定义配置设置:

public class XSocketsConfig : ConfigurationSetting
{
    public XSocketsConfig() : base(new Uri("ws://dashboard.ourdomain.com:4502/"), new Uri("ws://x.x.x.x:4502")) { }
}

从javascript我通过“ws://dashboard.ourdomain.com:4502/”连接访问XSocket,但是在部署到服务器后测试它时它不起作用。我也试过:

public class XSocketsConfig : ConfigurationSetting
{
    public XSocketsConfig() : base(new Uri("ws://x.x.x.x:4502")) { }
}

or

public class XSocketsConfig : ConfigurationSetting
{
    public XSocketsConfig() : base(new Uri("ws://127.0.0.1:4502")) { }
}

我确实启用了服务器防火墙以允许流量通过端口 4502。同样,在我的本地计算机上一切正常,所以这让我相信它要么是服务器上的设置,要么是 XSockets 的配置设置。

在 IIS 6 上实现客户端-服务器连接的正确方法是什么?非常感谢指针和建议,因为我几天的搜索还没有产生有效的结果。

4

1 回答 1

0

好的,所以我终于想通了。毕竟是防火墙问题。我必须配置防火墙以允许公共 ip 和端口上的流量,并将该流量转发到私有 ip 和端口。我的 XSockets 配置最终看起来像这样:

//http://xsockets.net/docs/configuration#public--private-endpoint
public class XSocketsConfig : ConfigurationSetting
{
    public XSocketsConfig() : base(new Uri("ws://x.x.x.x:4502/"), new Uri("ws://y.y.y.y:4502")) { }
}

其中 xxxx 是服务器的公共 IP 地址,yyyy 是 LAN 上的私有 IP 地址。然后在客户端(js)我这样做:

var conn = new XSockets.WebSocket('ws://x.x.x.x:4502/Activity');

这需要大量的故障排除,但我很高兴我弄明白了。

于 2014-07-01T17:14:06.630 回答