[英]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.