我在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更新数据,而在崩溃后它应该断开连接。 nymber的网格不止一个。希望这有助于澄清我的观点。
答案 0 :(得分:0)
您可以将我的lib用于此名为
SignalR.EventAggregatorProxy
使用nuget安装
Install-Package SignalR.EventAggregatorProxy
它为您提供了Hub和连接细节,因此您只需订阅和发布活动
检查wiki以了解如何设置它 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki
一旦设置完所有你需要todo来听javascript的后端事件是
ViewModel = function() {
signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this);
};
您可以只在一个连接和一个集线器上收听您想要的事件数量