SignalR 仅适用于本地主机
SignalR works only on localhost
在我的 SignalR 客户端中,我有以下 javaScript 个库:
<!--Reference the jQuery library. -->
<script src="Scripts/jquery-1.6.4.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="http://localhost:8081/signalr/hubs"></script>
在Javascript我去:
$.connection.hub.url = "http://localhost:8081/signalr;
$.connection.hub.logging = true;
var push = $.connection.exosChangeNotifier;
...
$.connection.hub.start().done();
该连接适用于本地主机。
当我在 VM 或另一台计算机上 运行 我的 SignalR 集线器并将 localhost 替换为 ip 地址或计算机名称时,我得到
http://[servername]:8081/signalr/hubs Failed to load resource: the server responded with a status of 400 (Bad Request)
Uncaught TypeError: Cannot read property 'client' of undefined.
我在我的计算机上的防火墙上打开了端口 8081 作为传出规则,并作为远程计算机或 VM 上的传入规则。使用 Sysinternal psping,我验证了该端口可以访问:
psping.exe [servername]:8081 -h
使用 Powershell Script 我能够仔细检查计算机是否可以访问并且端口是否打开。
在自托管 SignalR Startup 上,我启用了 CORS:
map.UseCors(CorsOptions.AllowAll);
我错过了什么?
我在 this SO Question 中找到了解决方案。服务器必须以 http://*:8081 启动以响应内部和外部请求。之前设置为只听localhost。
在我的 SignalR 客户端中,我有以下 javaScript 个库:
<!--Reference the jQuery library. -->
<script src="Scripts/jquery-1.6.4.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="http://localhost:8081/signalr/hubs"></script>
在Javascript我去:
$.connection.hub.url = "http://localhost:8081/signalr;
$.connection.hub.logging = true;
var push = $.connection.exosChangeNotifier;
...
$.connection.hub.start().done();
该连接适用于本地主机。 当我在 VM 或另一台计算机上 运行 我的 SignalR 集线器并将 localhost 替换为 ip 地址或计算机名称时,我得到
http://[servername]:8081/signalr/hubs Failed to load resource: the server responded with a status of 400 (Bad Request)
Uncaught TypeError: Cannot read property 'client' of undefined.
我在我的计算机上的防火墙上打开了端口 8081 作为传出规则,并作为远程计算机或 VM 上的传入规则。使用 Sysinternal psping,我验证了该端口可以访问:
psping.exe [servername]:8081 -h
使用 Powershell Script 我能够仔细检查计算机是否可以访问并且端口是否打开。
在自托管 SignalR Startup 上,我启用了 CORS:
map.UseCors(CorsOptions.AllowAll);
我错过了什么?
我在 this SO Question 中找到了解决方案。服务器必须以 http://*:8081 启动以响应内部和外部请求。之前设置为只听localhost。