我正在使用WebSockets开发一个站点,并使用XSockets.NET实现整个WebSockets服务器。
此外,我可以从开发机器内部访问XSocket.NET控制器,但无法从另一台机器访问它。
顺便说一下,这不是DNS问题,因为网站本身可以从任何其他机器上浏览:它是带有WebSockets的。
目前,我在Firebug中收到以下错误:Firefox无法建立到服务器[…]的连接,其中服务器是端口7532上的整个主机名。
我可以提供如何配置和启动整个WebSockets服务器的示例代码:
IXSocketServerContainer server = Composable.GetExport<IXSocketServerContainer>();
List<IConfigurationSetting> serverConfig = new List<IConfigurationSetting>();
serverConfig.Add(new ConfigurationSetting("ws://[host name]:7532", new HashSet<string> { "*" }));
server.StartServers(configurationSettings: serverConfig);
另外,整个XSockets.NET托管在一个Windows服务中,我使用现成的XSockets.NET JavaScript API连接到XSocket.NET控制器:
// This will work as expected when I open my site from the development machine
var conn = new XSockets.WebSocket("ws://[host name]:7352/[controller name]");
conn.on(XSockets.Events.open, function (clientInfo) {
conn.subscribe("[Action name]", function (message) {
});
});
什么会阻止其他机器连接到整个WebSocket服务器?我错过了什么?
最佳答案
我已经解决了,这是最低限度的改变。
似乎XSockets.NET需要配置WebSocket来监听任何IP和任何主机。也就是说,整个主机应该0.0.0.0:7532
。
令人惊讶的是,I've found the solution in a comment on this XSockets.NET documentation page (Creating custom configuration ...):
VJ公司:
好 啊。所以我对上面提到的问题有了更新。可能的
解决方案,反正是给我的。
在CustomConfigLoader中,我将把ip地址添加为0.0.0.0,这意味着我的XSockets服务器将从任何ip地址监听。因此,代码如下所示:var
url=“ws://0.0.0.0:4502/”;
在Javascript中,我将使用window.location.hostname,它指向应用程序的主机,实际上是服务器
客户,我正在使用我的XSockets。
第二步已经是我在代码中所做的,第一步是我的诀窍所在(在我的例子中,我没有使用CustomConfigLoader,但我只是添加了一个ConfigurationSetting
和0.0.0.0:7352
作为主机IP/主机名)。