信号R客户端-Xamarin表单-连接中心无法正常使用C#

时间:2019-08-01 21:29:19

标签: c# xamarin.forms signalr signalr-hub

为什么以下代码无法将我连接到集线器?

****我没有使用Azure函数****

我将天蓝色钥匙放在哪里?

如何构建这个复杂的网址?

这类似于我原来的天蓝色钥匙 AccessKey = 09988588488378383azudjGHG / E =&Version = 1123.0“;

我知道服务器和集线器正在工作,因为我使用Java创建了示例,并且该示例正在运行(请参见下面的实现)。

无论我尝试使用哪个URL,我都能获得“断开连接”的信息。

public event EventHandler<MessageEventArgs> OnReceivedMessage;
public void bindConnectionMessage(bool useHttps)
{
    string urlRoot = "test.signalr.net/?AccessKey=Iwillneversharethiskeyjajajajaj####/E=&Version=1123.0";
    var url = $"http{(useHttps ? "s" : string.Empty)}://{urlRoot}/ChatHub";

    hubConnection =
     new HubConnectionBuilder().WithUrl
     (url)
     .Build();



    hubConnection.On<string>("Send", (message) =>
    {
        var finalMessage = $"Sending something {message}";
        OnReceivedMessage?.Invoke(this, new MessageEventArgs(finalMessage));

    });

    hubConnection.On<string>("Echo", (message) =>
    {
        var finalMessage = $"says {message}";
        OnReceivedMessage?.Invoke(this, new MessageEventArgs(finalMessage));

    });

    hubConnection.StartAsync();
    Debug.WriteLine(IsConnected);
}

1 个答案:

答案 0 :(得分:1)

start方法是异步的,您需要向该方法添加async并等待调用。

public async void bindConnectionMessage(bool useHttps)
{
 .....
 await hubConnection.StartAsync();

你应该很好。

这是我的完整辅助功能:

public static HubConnection Create(string serverUri, string hubName, Func<Task<string>> getToken)
    {
        var server = $"https://{serverUri}/{hubName}"; 
        var hubConnection = new HubConnectionBuilder()
            .WithUrl(server, options => {
                options.AccessTokenProvider = getToken;
            })
            .Build();
        return hubConnection; 
    }