说明

EventBus功能是企业版专属功能,其职能类似MQTT的发布订阅模式,也类似RabbitMQ的Sub模式。如果没有使用密钥,可以试用参考。

创建服务器

服务器的创建就是TouchRpc服务器。除udp协议外,tcp、http、websocket协议的版本均支持该功能。

下列以TcpTouchRpcService为例。

  1. TcpTouchRpcService tcpRpcService = new TcpTouchRpcService();
  2. var config = new RRQMConfig();
  3. config.SetListenIPHosts(new IPHost[] { new RRQMSocket.IPHost(7789) });
  4. tcpRpcService
  5. .Setup(config)
  6. .Start();

服务器发布一个事件。
第一个参数为事件名,第二个为访问权限。

  1. tcpRpcService.PublishEvent("Hello", AccessType.Owner | AccessType.Service | AccessType.Everyone);

创建客户端

客户端订阅该事件。

  1. TcpTouchRpcClient tcpRpcClient = new TcpTouchRpcClient();
  2. tcpRpcClient
  3. .Setup("127.0.0.1:7789")
  4. .Connect();
  5. tcpRpcClient.SubscribeEvent<string>("Hello", SubscribeEvent);

其中SubscribeEvent是接收委托。此处用方法转换接收。其目的为,当服务器触发该方法时,就会分发到此处。

  1. private void SubscribeEvent(EventSender eventSender, string arg)
  2. {
  3. this.ShowMsg($"从{eventSender.RaiseSourceType}收到通知事件{eventSender.EventName},信息:{arg}");
  4. }

服务器触发

第一个参数是事件名,第二个是事件参数。可以是任意类型,但是目前仅支持一个参数。

  1. tcpRpcService.RaiseEvent("Hello", "Hi");

其他

实际上在TouchRpc架构中。TouchServiceTouchSocketClientTouchClient三者均已实现IEventObject接口,这意味均可以发布、取消发布、订阅、取消订阅、触发等操作(会验证操作权限)。
6、EventBus - 图1
image.png