使用 SignalR 时,我的 Web 服务器如何知道 localhost 在哪里?
When using SignalR how does my Web Server know where localhost is?
我在 Web 应用程序中使用 SignalR,该应用程序托管在与客户端无关的单独服务器上。
在代码中,我有一个连接到 SignalR 自托管服务 (C#) 的函数,即 运行 在 客户端的 计算机上单击/在 Web 应用程序上执行操作(已由客户端安装)。如果客户端单击我的 Web 应用程序上的某个按钮,那么我的服务将从 JavaScript 代码获取发送给它的数据,因为我的服务器是 运行 在 http://* 上: 8080.
一切似乎工作正常。我的问题是,如何?
我的 Web 应用程序正在 服务器端 JS 代码 中设置连接,这样说
MyWebApp.cshtml
//Set the hubs URL for the connection
$.connection.hub.url = "http://localhost:8080/signalr";
我的 C# 服务 运行 在后台客户端计算机上(已安装)是这样说的:
MyService.cs
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("Service started");
//string url = "http://localhost:8080";
string url = "http://*:8080";
SignalR = WebApp.Start(url);
eventLog1.WriteEntry("Server running on " + url);
}
当服务器端代码说 "Hey look for localhost on 8080!"
时,他们怎么可能还在通信
服务说"Hey start on *:8080!"(我什至不明白*是什么意思)
最后但同样重要的是,如果我取消注释我的服务中当前被注释掉的行并使用它来启动服务,它将无法工作!为什么我的服务会在 http//*:8080 上启动,但 不会在 http://localhost:8080 上启动 ?
此代码:
WebApp.Start("http://*:8080")
说 "listen for connections on port 8080 on any IP address available"。因此它将绑定到 localhost
(127.0.0.1) 和机器拥有的任何其他分配的 IP 地址。它基本上是一个通配符绑定。
此代码:
$.connection.hub.url = "http://localhost:8080/signalr";
表示服务器位于解析为 127.0.0.1 的本地主机上。
关于服务器在 http://localhost:8080
上启动时为什么它不起作用的最后一点,我认为这是因为 SignalR 无法映射到正确的 IP 地址。请尝试使用 http://127.0.0.1:8080
。
我在 Web 应用程序中使用 SignalR,该应用程序托管在与客户端无关的单独服务器上。
在代码中,我有一个连接到 SignalR 自托管服务 (C#) 的函数,即 运行 在 客户端的 计算机上单击/在 Web 应用程序上执行操作(已由客户端安装)。如果客户端单击我的 Web 应用程序上的某个按钮,那么我的服务将从 JavaScript 代码获取发送给它的数据,因为我的服务器是 运行 在 http://* 上: 8080.
一切似乎工作正常。我的问题是,如何?
我的 Web 应用程序正在 服务器端 JS 代码 中设置连接,这样说
MyWebApp.cshtml
//Set the hubs URL for the connection
$.connection.hub.url = "http://localhost:8080/signalr";
我的 C# 服务 运行 在后台客户端计算机上(已安装)是这样说的:
MyService.cs
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("Service started");
//string url = "http://localhost:8080";
string url = "http://*:8080";
SignalR = WebApp.Start(url);
eventLog1.WriteEntry("Server running on " + url);
}
当服务器端代码说 "Hey look for localhost on 8080!"
时,他们怎么可能还在通信服务说"Hey start on *:8080!"(我什至不明白*是什么意思)
最后但同样重要的是,如果我取消注释我的服务中当前被注释掉的行并使用它来启动服务,它将无法工作!为什么我的服务会在 http//*:8080 上启动,但 不会在 http://localhost:8080 上启动 ?
此代码:
WebApp.Start("http://*:8080")
说 "listen for connections on port 8080 on any IP address available"。因此它将绑定到 localhost
(127.0.0.1) 和机器拥有的任何其他分配的 IP 地址。它基本上是一个通配符绑定。
此代码:
$.connection.hub.url = "http://localhost:8080/signalr";
表示服务器位于解析为 127.0.0.1 的本地主机上。
关于服务器在 http://localhost:8080
上启动时为什么它不起作用的最后一点,我认为这是因为 SignalR 无法映射到正确的 IP 地址。请尝试使用 http://127.0.0.1:8080
。