private void Trigger_Click(object sender, RoutedEventArgs e) { string eventName = this.eventBox.Text.Trim(); string payload = this.payloadBox.Text.Trim(); if (this.channel == null || string.IsNullOrEmpty(eventName)) { return; } channel.PublishAsync(eventName, payload); }
public async Task ChannelSubscribe() { var realtime = new AblyRealtime(new ClientOptions(PlaceholderKey) { AutoConnect = false }); IRealtimeChannel channel = realtime.Channels.Get("test"); // Or ... IRealtimeChannel channel2 = realtime.Channels.Get("shortcut"); channel.Subscribe(message => { var name = message.Name; var data = message.Data; }); channel.On(args => { var state = args.Current; // Current channel State var error = args.Error; // If the channel error-ed it will be reflected here }); channel.On(ChannelEvent.Attached, args => { // Do stuff when channel is attached }); channel.Publish("greeting", "Hello World!"); channel.Publish("greeting", "Hello World!", (success, error) => { // If 'Publish' succeeded 'success' is 'true' // If 'Publish' failed 'success' is 'false' and 'error' will contain the specific error }); var result = await channel.PublishAsync("greeting", "Hello World!"); // You can check if the message failed if (result.IsFailure) { var error = result.Error; // The error reason can be accessed as well } var secret = Crypto.GenerateRandomKey(); var encryptedChannel = realtime.Channels.Get("encrypted", new ChannelOptions(secret)); encryptedChannel.Subscribe(message => { var data = message.Data; // Sensitive data (encrypted before published) }); encryptedChannel.Publish("name (not encrypted)", "sensitive data (encrypted before published)"); }