SignalR向单个connectionId发送消息

Tim*_*sen 15 c# asp.net signalr signalr-hub

我有一个asp.net经典网站.我已经有了SignalR基本功能(一个客户端向其他客户端发送消息).但现在我只想将消息发送到特定的connectionID.

我的中心:

**    [HubName("chatHub")]
    public class ChatHub : Hub 
    {
        public static List<string> messages = new List<string>();

        public void GetServiceState()
        {
            Clients.updateMessages(messages);
        }

        public void UpdateServiceState()
        {
            messages.Add(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));

            Clients.updateMessages(messages);
        }

    }**
Run Code Online (Sandbox Code Playgroud)

Asp代码:

        <script type="text/javascript">
            $(function () {
                // creates a proxy to the health check hub

                var healthCheckHub = $.connection.chatHub;
                console.log($.connection.hub)
                // handles the callback sent from the server
                healthCheckHub.updateMessages = function (data) {
                    $("li").remove();

                    $.each(data, function () {
                        $('#messages').append('<li>' + this + '</li>');
                        console.log($.connection);
                    });
                };

                $("#trigger").click(function () {
                    healthCheckHub.updateServiceState();
                });

                // Start the connection and request current state
                $.connection.hub.start(function () {
                    healthCheckHub.getServiceState();
                });


            });
Run Code Online (Sandbox Code Playgroud)

问题是我真的不知道如何通过集群发送到一个特定的ConnectionID,因为Clients.updateMessages(messages); 向所有人发送消息.我该如何解决这个问题?

PS:我已经看过了:用Signalr/PersistentConnection向连接的客户端发送服务器消息

http://riba-escapades.blogspot.dk/2012/05/signalr-send-messages-to-single-client.html

那不起作用.

Dre*_*rsh 26

好吧,您可以从集线器向单个客户端发送消息,如下所示:

Clients.Client(someConnectionIdIWantToSendToSpecifically).doSomething();
Run Code Online (Sandbox Code Playgroud)

诀窍是您需要知道要将消息发送到的连接ID.更具体地说,您可能希望知道要发送消息的事物的逻辑身份,因为该逻辑身份可能具有多个连接,或者已经在完全不同的连接ID下丢弃和重新连接.将连接映射到逻辑身份是SignalR留给应用程序本身的东西.

  • 真的不记得我的头脑,没有时间检查这一秒,但是_pretty_确定它只是对你的无操作.要检查一下像Client("abc123").foo()这样的东西,看看会发生什么. (2认同)