我想使用 SignalR 将数据推送到 Web 客户端。
public class PushHub : Hub
{
public void Push(string data)
{
Clients.push(data);
}
}
public class DataGenerator
{
private readonly PushHub pushHub;
public void DataGenerator(PushHub pushHub)
{
this.pushHub = pushHub;
}
public void Tick()
{
pushHub.Push("Ping");
}
}
但是,我不希望客户端能够调用此函数。
我只是打算从服务器上调用 Hub 对象本身的函数(除非这是一个坏主意?)。
但我不希望客户能够调用推送。
SignalR 是否为此提供了手段(例如,仅服务器功能的属性)?
如果我必须自己实现某些东西,那么我有一些想法,但我不确定它们有多好:
- 让另一个类访问 Clients 属性,然后调用 Push。
- 在 HUB 中存储某种只有服务器知道的 Nonce,并将该 nonce 作为额外参数传递给 Push。
- 从上下文中检查客户端 ID。我想从随机线程调用函数时它不存在。