下面是我连接集线器的代码。我使用以下代码连接集线器并发送消息。
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");
}
每次发送消息时,您正在重新建立与集线器的连接。那是错误的方法。相反,您应该检查连接状态并仅在连接丢失的情况下重新连接。
示例
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
}
}