我有SignalR中心服务和SignalR客户端。让我们说,
场景1: 我在172.100.20.55中运行SignalR服务器,在172.100.20.80中运行clinet或在同一域中运行任何其他IP。 对于HubConnection,我在服务器端和客户端使用http://172.100.20.55:100。 在这种情况下,我将能够与服务器和客户端进行通信。
场景2: 我在172.100.20.55运行SignalR服务器,在172.100.20.80运行客户端。 对于HubConnection,我在服务器端使用http://172.100.20.55:100和 http://115.240.70.250:100(115.240.70.250是172.100.20.55的公共IP)。 在这种情况下,服务器启动,客户端无法与服务器连接,因为它位于域外。
这是我的代码:
服务器端:
private void StartServer()
{
try
{
IDisposable SignalR = WebApp.Start(http://172.100.20.55:100);
}
catch (TargetInvocationException exc)
{
throw;
}
}
客户方:
private async void ConnectAsync()
{
HubConnection Connection = new HubConnection(http://115.240.70.250:100);
HubProxy = Connection.CreateHubProxy("MyHub");
HubProxy.On<string, string>("AddMessage", (name, message) => //do something)
);
try
{
await Connection.Start();
}
catch (HttpRequestException exc)
{
throw;
}
}
当我尝试连接客户端时,它会抛出&#34; 连接尝试失败,因为连接方在一段时间后没有正确响应, 或已建立的连接失败,因为已连接的主机无法响应115.240.70.250:100&#34;
因为我已将我的clinet连接到不同的网络(在这种情况下,我使用了我的加密狗网络)。
我想将Public IP与服务器连接起来。我怎么想实现这个目标?任何帮助都会非常适合。