Клиентское приложение Python SignalR - Как получить ConnectionId после подключения к SignalR Hub - PullRequest
0 голосов
/ 23 марта 2019

Первый раз постер.Это мой первый опыт разработки микросервиса с использованием .NET.Клиенты будут использовать REST API для запроса сервиса, API будет использовать микросервис для получения результатов и отправки обратно клиентам.REST API собирается использовать SignalR для возврата данных с помощью обратного вызова.Ожидаются два клиентских приложения: одно будет разработано в .NET, а другое в PYTHON для потребителя сервиса.Я могу выполнить успешное тестирование с помощью клиента .NET (с использованием Microsoft.AspNet.SignalR.Client), однако, когда я пытаюсь использовать клиент PYTHON (используя клиент-сигнал), я не могу вызвать обратный вызов из API дляконкретный клиент (если я отправлю ответ ВСЕМ клиентам, которые работают).Я считаю, что в клиентском приложении .NET после подключения к HUB я могу получить ConnectionId, используя HubConnection.ConnectionId.Затем, когда я выполняю вызов REST API, я передаю тот же ConnectionId, и API использует ConnectionId для отправки ответа с использованием SignalR.Однако в клиенте PYTHON я не могу найти атрибут ConnectionId в объекте Connection.Кто-нибудь знает, как я могу получить ConnectionId в клиенте PYTHON (или есть какой-то другой подход, которому я должен следовать).

Это клиент .NET, который работает


    HttpClient client = new HttpClient();
    HubConnection hubConnection = new HubConnection("http://localhost:12247");
    var hubProxy = hubConnection.CreateHubProxy("MyTestHub");
    Action<string> onUpdate = str => System.Console.WriteLine($"received: {str}");

    hubConnection.Start()
        .ContinueWith(t =>
        {
            hubProxy.On("OnUpdateCallback", onUpdate);
        }).Wait();

    var guid = Guid.Parse(hubConnection.ConnectionId);
    var response = client.PostAsJsonAsync("http://localhost:12247/api/Values", guid).Result;
    System.Console.ReadLine();

ЭтоКлиент PYTHON, но как найти ConnectionId


    with Session() as session:
        connection = Connection("http://localhost:12247/signalr", session)
        hub = connection.register_hub('MyTestHub')
        connection.start()

        def onUpdate(data):
            print('received: ' + str(data))

        hub.client.on('OnUpdateCallback', onUpdate)

        with connection:
            response = requests.post("http://localhost:12247/api/Values", json=???) #how to find connectionid

    sys.stdin.readline()

...