示例#1
0
        public async Task Init(Context context, string userId)
        {
            _context         = context;
            _agoraRtmHandler = new AgoraRtmHandler();
            _agoraRtmHandler.OnSignalReceived += (signal) =>
            {
                Log($"Signal received from {signal.RtcPeerId}");
                OnSignalReceived?.Invoke(signal);
            };
            _rtmClient = RtmClient.CreateInstance(_context, AgoraTestConstants.AgoraAPI, _agoraRtmHandler);

            var rtmToken = await AgoraTokenService.GetRtmToken(userId);

            var loginCallback = new ResultCallback();

            loginCallback.OnSuccessAction += (obj) =>
            {
                UserName = userId;
                OnLogin?.Invoke(true);
                Log("Login Success");
            };
            loginCallback.OnFailureAction += (err) =>
            {
                OnLogin?.Invoke(false);
                Log("Login Fail");
            };
            _rtmClient.Login(rtmToken, userId, loginCallback);
        }
        private void OmMessageReceived(string peerId, AgoraRtmMessage message)
        {
            var text   = message.Text;
            var signal = JsonConvert.DeserializeObject <SignalMessage>(text);

            OnSignalReceived?.Invoke(signal);
        }
示例#3
0
        public void JoinChannel(string channel)
        {
            Log($"Joining to channel [{channel}]");
            _channelListener = new AgoraRtmChannelListener();
            _channelListener.OnSignalReceived += (signal) =>
            {
                Log($"Signal received from {signal.RtcPeerId}");
                OnSignalReceived?.Invoke(signal);
            };
            _sendMessageChannelCallback = new ResultCallback();
            _sendMessageChannelCallback.OnSuccessAction += (obj) =>
            {
                Log("Send channel message Success");
                OnSendMessage?.Invoke(true);
            };
            _sendMessageChannelCallback.OnFailureAction += (obj) =>
            {
                Log("Send channel message Fail");
                OnSendMessage?.Invoke(false);
            };
            _rtmChannel = _rtmClient.CreateChannel(channel, _channelListener);
            var channelJoinCallBack = new ResultCallback();

            channelJoinCallBack.OnSuccessAction += (obj) =>
            {
                Log("Join Success");
                if (_rtmChannel == null)
                {
                    return;
                }
                OnJoinChannel?.Invoke(true);
            };
            channelJoinCallBack.OnFailureAction += (err) =>
            {
                Log($"Join Fail. {err.ErrorDescription}");
                if (_rtmChannel == null)
                {
                    return;
                }
                OnJoinChannel?.Invoke(false);
            };
            _rtmChannel?.Join(channelJoinCallBack);
        }
示例#4
0
        private void InitHubEvents()
        {
            _hubConnection.On <string>("UpdateOnlineUsers", (message) =>
            {
                OnOnlineUsersUpdated?.Invoke(message.FromJson <List <User> >());
            });

            _hubConnection.On <int>("UpdateBalance", (balance) =>
            {
                OnBalanceUpdated?.Invoke(balance);
            });

            _hubConnection.On <string>("IncomingCall", (connectionId) =>
            {
                OnIncomingCall?.Invoke(connectionId);
            });

            _hubConnection.On <string>("CallAccepted", (connectionId) =>
            {
                OnCallAccepted?.Invoke(connectionId);
            });

            _hubConnection.On <string>("CallDeclined", (message) =>
            {
                OnCallDeclined?.Invoke(message.FromJson <UserActionMessage>());
            });

            _hubConnection.On <string>("CallEnded", (message) =>
            {
                OnCallEnded?.Invoke(message.FromJson <UserActionMessage>());
            });

            _hubConnection.On <string>("CallDenied", (message) =>
            {
                OnCallDenied?.Invoke(message.FromJson <ServerActionMessage>());
            });

            _hubConnection.On <string>("Poll", (message) =>
            {
                OnPoll?.Invoke(message.FromJson <PollMessage>());
            });

            _hubConnection.On <string, string>("ReceiveSignal", (connectionId, data) =>
            {
                OnSignalReceived?.Invoke(connectionId, data);
            });


            _hubConnection.On <string>("UpdateUsers", (message) =>
            {
                OnUsersUpdated?.Invoke(message.FromJson <List <User> >());
            });

            _hubConnection.On <string>("UpdateCalls", (message) =>
            {
                OnCallsUpdated?.Invoke(message.FromJson <List <UserCall> >());
            });

            _hubConnection.On <string>("CallAborted", (message) =>
            {
                OnCallAborted?.Invoke(message.FromJson <ServerActionMessage>());
            });
        }