Python SignalR客户端应用程序-连接到SignalR集线器后如何获取ConnectionId

时间:2019-03-23 01:05:01

标签: c# python .net signalr microservices

第一次张贴。这是我使用.NET开发微服务的第一次经验。客户端将使用REST API来请求服务,API将使用微服务来获取结果并将其发送回客户端。 REST API将使用SignalR通过回调返回数据。预期有两种客户端应用程序,一种将在.NET中开发,另一种将在PYTHON中开发以使用该服务。我可以使用.NET客户端(使用Microsoft.AspNet.SignalR.Client)进行成功的测试,但是,当我尝试使用PYTHON客户端(使用Signalr-client)时,无法触发API的回调特定客户(如果我将响应发送给所有有效的客户)。我相信是因为在.NET客户端应用程序中,连接到HUB之后,我可以使用HubConnection.ConnectionId获得ConnectionId。然后,当我进行REST API调用时,我传递相同的ConnectionId,并且API使用ConnectionId通过SignalR发送响应。但是在PYTHON客户端中,我在Connection对象中找不到ConnectionId属性。有人知道我如何在PYTHON客户端中获取ConnectionId(或者我需要遵循其他方法)吗?

这是有效的.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()

0 个答案:

没有答案