当我尝试向所有客户端广播消息时,我可以从服务器触发客户端的javascript代码并完成工作。
但这次我的目标是在所有服务器中触发一个方法。例如,当用户的角色在一个服务器中更改时,我想警告其他服务器有关此操作,并且我想让其他服务器检索特定用户的更新用户角色列表。
是否可以使用SignalR执行此操作?服务器的行为可以像客户端(浏览器)吗?
答案 0 :(得分:1)
是的,你可以做到。
我们假设你有以下中心:
public class TheHub : Hub
{
public void RoleChanged(int userId)
{
Clients.All.roleChanged(userId);
}
}
在所有收听服务器上,您必须执行以下操作:
var _connection = new HubConnection("http://localhost:1234/signalr");
var _theHub = _connection.CreateHubProxy("TheHub");
_myHub.On<int>("RoleChanged", userId =>
{
System.Diagnostics.Debug.WriteLine("Changed user's Id: " + userId);
});
_connection.Start().Wait();
要调用RoleChanged事件,请执行:
_myHub.Invoke("RoleChanged").Wait();