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

Pxa*_*aml 6 c# signalr signalr-hub xamarin.forms

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

****我没有使用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);
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ond 1

start方法是异步的,需要在方法中添加async并await调用。

public async void bindConnectionMessage(bool useHttps)
{
 .....
 await hubConnection.StartAsync();
Run Code Online (Sandbox Code Playgroud)

你应该表现得很好。

这是我的完整辅助函数:

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; 
    }
Run Code Online (Sandbox Code Playgroud)

  • @Pxaml,你能把 `hubConnection.StartAsync();` 放在 try.. catch 中,然后让我们看看期望吗? (2认同)