Skip to main content

EventBus

说明

EventBus功能是企业版专属功能,其职能类似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架构中。TouchServiceTouchSocketClientTouchClient三者均已实现IEventObject接口,这意味均可以发布、取消发布、订阅、取消订阅、触发等操作(会验证操作权限)。