如何从Public IP连接SignalR clinet?

时间:2018-03-16 07:47:52

标签: c# signalr owin signalr-hub signalr.client

我有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:100http://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与服务器连接起来。我怎么想实现这个目标?任何帮助都会非常适合。

0 个答案:

没有答案