信号R大约需要1分钟才能连接到Xamarin形式的移动网络集线器

问题描述 投票:0回答:1

下面是我连接集线器的代码。我使用以下代码连接集线器并发送消息。

public ChatService(){
connection = new HubConnection(Services.ServerConstant.BaseUrl);
proxy = ChatServices._connection.CreateHubProxy("HubName");
}

//开始连接

Void async Start(){
 var http = new Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient();
 await _connection.Start(new WebSocketTransportLayer(http));
}

//对于连接

Void SendMessage(){
 chatServices = DependencyService.Get<IChatServices>();
 chatServices.Connect();
connection.Start();
  await connection.Send("Test");
}
xamarin.forms xamarin.ios signalr signalr-hub signalr.client
1个回答
0
投票

每次发送消息时,您正在重新建立与集线器的连接。那是错误的方法。相反,您应该检查连接状态并仅在连接丢失的情况下重新连接。

示例

private async Task CheckConnection()
{
    if (connection.State == ConnectionState.Connected)
    {
        return;
    }
    try
    {
        await connection.Start();
        await proxy.Invoke("Connect");
    }
    catch (Exception ex)
    {
      // your exception handler goes here
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.