示例#1
0
        public async Task CreateRoomAsync(int roomCode, Action <Guid, RoomMember, int> returnAction)
        {
            _hub.Remove("ConnectedToRoom");
            await _hub.SendAsync("CreateRoomAsync", roomCode);

            _hub.On("ConnectedToRoom", returnAction);
            _hub.On("SendInfo", OnInfo);
        }
示例#2
0
        public async Task ConnectStatusStreamAsync()
        {
            if (_connectionConfig.ServerMode == "v1")
            {
                // older signalr client/server
                _legacyConnection = new Microsoft.AspNet.SignalR.Client.HubConnection(_statusHubUri);
                _legacyConnection.Credentials = System.Net.CredentialCache.DefaultCredentials;

                var hubProxy = _legacyConnection.CreateHubProxy("StatusHub");

                hubProxy.On<ManagedCertificate>(Providers.StatusHubMessages.SendManagedCertificateUpdateMsg, (u) => OnManagedCertificateUpdated?.Invoke(u));
                hubProxy.On<RequestProgressState>(Providers.StatusHubMessages.SendProgressStateMsg, (s) => OnRequestProgressStateUpdated?.Invoke(s));
                hubProxy.On<string, string>(Providers.StatusHubMessages.SendMsg, (a, b) => OnMessageFromService?.Invoke(a, b));

                _legacyConnection.Reconnecting += OnConnectionReconnecting;
                _legacyConnection.Reconnected += OnConnectionReconnected;
                _legacyConnection.Closed += OnConnectionClosed;

                await _legacyConnection.Start();

            }
            else
            {
                // newer signalr client/server

                // TODO: auth: https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1

                connection = new HubConnectionBuilder()
                .WithUrl(_statusHubUri)
                .WithAutomaticReconnect()
                .AddMessagePackProtocol()
                .Build();

                connection.Closed += async (error) =>
                {
                    await Task.Delay(new Random().Next(0, 5) * 1000);
                    await connection.StartAsync();
                };

                connection.On<RequestProgressState>(Providers.StatusHubMessages.SendProgressStateMsg, (s) =>
                {
                    OnRequestProgressStateUpdated?.Invoke(s);
                });

                connection.On<ManagedCertificate>(Providers.StatusHubMessages.SendManagedCertificateUpdateMsg, (u) =>
                {
                    OnManagedCertificateUpdated?.Invoke(u);
                });

                connection.On<string, string>(Providers.StatusHubMessages.SendMsg, (a, b) =>
                {
                    OnMessageFromService?.Invoke(a, b);
                });

                await connection.StartAsync();
            }
        }
示例#3
0
        public HubClient(NavigationManager navigationManager)
        {
            var hubConnection = new HubConnectionBuilder()
                                .WithUrl(navigationManager.ToAbsoluteUri("/hub"))
                                .WithAutomaticReconnect()
                                .Build();

            _hub = hubConnection;

            _hub.Reconnected  += OnConnectionStateChanged;
            _hub.Closed       += InvokeConnectionStateChanged;
            _hub.Reconnecting += InvokeConnectionStateChanged;
            StartConnection();
            _hub.On <RoomMember>("JoinedRoom", async(arg) => await OnPeerJoinedRoom(arg));
            _hub.On <AnswerRequest>("SendAnswer", async(arg) => await OnAnswerReceived(arg));
            _hub.On <RTCIceCandidate, Guid>("NewIce", async(arg1, arg2) => await OnIceCandidate(arg1, arg2));
        }
        public async Task OnInitializedAsync()
        {
            _hubConnection = new HubConnectionBuilder().Build();

            _hubConnection.On <Message>("ReceiveMessage",
                                        (message) => {
                _messages.Add(message);
            });
            await _hubConnection.StartAsync();
        }
示例#5
0
        public async void connectButton()
        {
            connection.On <string, string, int>("ReceiveMessage", (user, message, clientCount) =>
            {
                if (Guid.Parse(user) == GuidId)
                {
                    MessageManager.Instance.WriteSuccessLine($"我: {message}    当前在线【{clientCount}】");
                }
                else
                {
                    MessageManager.Instance.WriteInfoLine($"{user}: {message}    当前在线【{clientCount}】");
                }
            });
            //服务注册通知
            connection.On <int>("RegisterNotice", (message) =>
            {
                MessageManager.Instance.WriteSuccessLine($"连接成功,当前在线客户端总数:{message.ToString()}");
            });
            //系统通知
            connection.On <string>("ServerNotice", (message) =>
            {
                MessageManager.Instance.WriteWarningLine($"系统通知:{message.ToString()}");
            });
            try
            {
                await connection.StartAsync();

                Register();
            }
            catch (Exception ex)
            {
                MessageManager.Instance.WriteErrorLine(ex.ToString());

                Reconnection(1);
            }
        }
示例#6
0
        public async Task ConnectStatusStreamAsync()
        {
            if (_connectionConfig.ServerMode == "v1")
            {
                // older signalr client/server
                _legacyConnection             = new Microsoft.AspNet.SignalR.Client.HubConnection(_statusHubUri);
                _legacyConnection.Credentials = System.Net.CredentialCache.DefaultCredentials;

                var hubProxy = _legacyConnection.CreateHubProxy("StatusHub");

                hubProxy.On <ManagedCertificate>(Providers.StatusHubMessages.SendManagedCertificateUpdateMsg, (u) => OnManagedCertificateUpdated?.Invoke(u));
                hubProxy.On <RequestProgressState>(Providers.StatusHubMessages.SendProgressStateMsg, (s) => OnRequestProgressStateUpdated?.Invoke(s));
                hubProxy.On <string, string>(Providers.StatusHubMessages.SendMsg, (a, b) => OnMessageFromService?.Invoke(a, b));

                _legacyConnection.Reconnecting += OnConnectionReconnecting;
                _legacyConnection.Reconnected  += OnConnectionReconnected;
                _legacyConnection.Closed       += OnConnectionClosed;

                await _legacyConnection.Start();
            }
            else
            {
                // newer signalr client/server

                // TODO: auth: https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1

                connection = new HubConnectionBuilder()
                             .WithUrl(_statusHubUri, opts =>
                {
                    opts.HttpMessageHandlerFactory = (message) =>
                    {
                        if (message is System.Net.Http.HttpClientHandler clientHandler)
                        {
                            if (_connectionConfig.AllowUntrusted)
                            {
                                // allow invalid tls cert
                                clientHandler.ServerCertificateCustomValidationCallback +=
                                    (sender, certificate, chain, sslPolicyErrors) => { return(true); };
                            }
                        }
                        return(message);
                    };
                })
                             .WithAutomaticReconnect()
                             .AddMessagePackProtocol()
                             .Build();

                connection.Closed += async(error) =>
                {
                    await Task.Delay(new Random().Next(0, 5) * 1000);

                    await connection.StartAsync();
                };

                connection.On <RequestProgressState>(Providers.StatusHubMessages.SendProgressStateMsg, (s) =>
                {
                    OnRequestProgressStateUpdated?.Invoke(s);
                });

                connection.On <ManagedCertificate>(Providers.StatusHubMessages.SendManagedCertificateUpdateMsg, (u) =>
                {
                    OnManagedCertificateUpdated?.Invoke(u);
                });

                connection.On <string, string>(Providers.StatusHubMessages.SendMsg, (a, b) =>
                {
                    OnMessageFromService?.Invoke(a, b);
                });

                await connection.StartAsync();
            }
        }