EventBus
说明
EventBus功能是Pro专属功能,其职能类似MQTT的发布订阅模式,也类似RabbitMQ的Sub模式。如果没有使用密钥,可以试用参考。
创建服务器
服务器的创建就是TouchRpc服务器。除udp协议外,tcp、http、websocket协议的版本均支持该功能。
下列以TcpTouchRpcService为例。
TcpTouchRpcService tcpRpcService = new TcpTouchRpcService();
var config = new RRQMConfig();
config.SetListenIPHosts(new IPHost[] { new RRQMSocket.IPHost(7789) });
tcpRpcService
.Setup(config)
.Start();
由服务器发布一个事件。 第一个参数为事件名,第二个为访问权限。
tcpRpcService.PublishEvent("Hello", AccessType.Owner | AccessType.Service | AccessType.Everyone);
创建客户端
客户端订阅该事件。
TcpTouchRpcClient tcpRpcClient = new TcpTouchRpcClient();
tcpRpcClient
.Setup("127.0.0.1:7789")
.Connect();
tcpRpcClient.SubscribeEvent<string>("Hello", SubscribeEvent);
其中SubscribeEvent是接收委托。此处用方法 转换接收。其目的为,当服务器触发该方法时,就会分发到此处。
private void SubscribeEvent(EventSender eventSender, string arg)
{
this.ShowMsg($"从{eventSender.RaiseSourceType}收到通知事件{eventSender.EventName},信息:{arg}");
}
服务器触发
第一个参数是事件名,第二个是事件参数。可以是任意类型,但是目前仅支持一个参数。
tcpRpcService.RaiseEvent("Hello", "Hi");
其他
实际上在TouchRpc架构中。TouchService、TouchSocketClient、TouchClient三者均已实现IEventObject接口,这意味均可以发布、取消发布、订阅、取消订阅、触发等操作(会验证操作权限)。