繁体   English   中英

是否可以在SignalR中为每个客户端创建不同的连接? 持久连接

[英]Is it possible to create different connections per client in SignalR? Persistent Connections

我在UI上有多个网格,并想通过signalR更新。 如果有更改,则仅更新相应的网格,其余的其他网格将保持原样。 是否可以为不同的网格创建不同的连接并相应地为每个客户端更新。 还必须维护不同客户端的连接ID。 那么,有什么可能的方法来找出这种情况吗? 寻找一些解决方案或建议。

服务器端

public class RealTimeEndPoint : PersistentConnection
{
    //Create array to maiantain connections
    static List<string> connectedUserId = new List<string>();

    //Called when the first connection is made
    protected override Task OnConnected(IRequest request, string connectionId) 
    {
        return Connection.Broadcast("Connection " + connectionId + " connected");
    }

    //Called when connection is disconnected
    protected override Task OnDisconnected(IRequest request, string connectionId)
    {
        connectedUserId.Remove(connectionId + ":" + request.User.Identity.Name);
        return Connection.Broadcast("Connection " + connectionId + " disconncted");
    }

    //Sends a value to specified signal
    protected override Task OnReceived(IRequest request, string connectionId, string data)
    {
        connectedUserId.Add(connectionId + ":" + request.User.Identity.Name);
        return Connection.Send(connectionId, "Connection " + connectionId + " sent " + data);
    }
}

客户端

myGrid1.on('rowcollapse', function (event) {
            GridConnection.stop();
        });

        myGrid1.on('rowexpand', function (event) {
            var row = event.args.rowindex;
            var value = myGrid1.jqxGrid('getcellvalue', row, "Name");                
            GridConnection.start().done(function () {
                GridConnection.send("P" + value);
            });

我需要的是扩展启动连接并通过signalR更新数据,而折叠后应断开连接。 网格的数目不止一个。 希望这有助于澄清我的观点。

您可以将我的lib用于

SignalR.EventAggregatorProxy

使用nuget安装

Install-Package SignalR.EventAggregatorProxy

它可以在后台处理您的集线器和连接详细信息,因此您只需要订阅和发布事件

检查Wiki以了解如何进行设置https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

设置完毕后,您需要做的就是让它从javascript监听后端事件是

ViewModel = function() {
   signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this);
};

您可以在一个连接和一个集线器上收听想要多少个事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM