示例#1
0
        public void Init(string ip, bool isBlazor = false)
        {
            hubConnection = new HubConnectionBuilder()
                            .WithUrl($"http://{ip}:5000/hubs/chat")
                            .Build();

            hubConnection.Closed += async(error) =>
            {
                OnConnectionClosed?.Invoke(this, new MessageEventArgs("Connection closed..."));
                IsConnected = false;
                await Task.Delay(random.Next(0, 5) * 1000);

                try
                {
                    await ConnectAsync();
                }
                catch (Exception ex)
                {
                    // Exception!
                }
            };

            hubConnection.On <string, string>("ReceiveMessage", (user, message) =>
            {
                var finalMessage = $"{user} says {message}";
                OnReceivedMessage?.Invoke(this, new MessageEventArgs(finalMessage));
            });

            hubConnection.On <string>("EnteredOrLeft", (message) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs(message));
            });
        }
示例#2
0
        public void Init(string urlRoot, bool useHttps)
        {
            random = new Random();

            var port = (urlRoot == "localhost" || urlRoot == "10.0.2.2") ?
                       (useHttps ? ":5001" : ":5000") :
                       string.Empty;

            var url = $"http{(useHttps ? "s" : string.Empty)}://{urlRoot}{port}/hubs/chat";

            hubConnection = new HubConnectionBuilder()
                            .WithUrl(url)
                            .WithAutomaticReconnect()
                            .Build();

            hubConnection.Closed += async(error) =>
            {
                OnConnectionClosed?.Invoke(this, new MessageEventArgs("Connection closed...", string.Empty));
                IsConnected = false;
                await Task.Delay(random.Next(0, 5) * 1000);

                try
                {
                    await ConnectAsync();
                }
                catch (Exception ex)
                {
                    // Exception!
                    Debug.WriteLine(ex);
                }
            };

            hubConnection.On <string, string>("ReceiveMessage", (user, message) =>
            {
                OnReceivedMessage?.Invoke(this, new MessageEventArgs(message, user));
            });

            hubConnection.On <string>("Entered", (user) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs($"{user} entered.", user));
            });


            hubConnection.On <string>("Left", (user) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs($"{user} left.", user));
            });


            hubConnection.On <string>("EnteredOrLeft", (message) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs(message, message));
            });
        }
示例#3
0
        public void Init(string urlRoot, string portNumber, bool useHttps)
        {
            //-----ITvitae server url = "10.10.1.34"-----//
            //-----ITvitae server port = "4444"-----//

            string url = $"http{(useHttps ? "s" : String.Empty)}://{urlRoot}:{portNumber}/hubs/chat";

            //string url = $"http://{urlRoot}:{portNumber}/hubs/chat";

            // Setup the hubconnection with the newly created url
            hubConnection = new HubConnectionBuilder()
                            .WithUrl(url)
                            .Build();

            // Initialize random so we can use it to randomize colors
            random = new Random();

            // Setup the hubConnection events
            hubConnection.Closed += async(error) =>
            {
                OnConnectionClosed?.Invoke(this, new MessageEventArgs("Connection closed...", DateTime.Now, string.Empty));
                IsConnected = false;

                // Wait a little and try to reconnect
                await Task.Delay(random.Next(0, 5) * 1000);

                try
                {
                    await ConnectAsync();
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            };

            // Receive message
            hubConnection.On <string, DateTime, string>("ReceiveMessage", (user, dateTime, message) =>
            {
                OnReceivedMessage?.Invoke(this, new MessageEventArgs(user, dateTime, message));
            });

            // Receive file
            hubConnection.On <string, DateTime, string, string>("ReceiveFile", (user, dateTime, folderName, fileName) =>
            {
                OnReceivedFile?.Invoke(this, new FileEventArgs(user, dateTime, folderName, fileName));
            });

            // Entered
            hubConnection.On <string, DateTime>("Entered", (user, dateTime) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs(user, dateTime, $"{user} entered."));
            });

            // Exited
            hubConnection.On <string, DateTime>("Left", (user, dateTime) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs(user, dateTime, $"{user} left."));
            });

            // Entered or left ??? <--- WTF (vanuit tutorial, geen idee waar voor nodig)
            hubConnection.On <string, DateTime>("EnteredOrLeft", (message, dateTime) =>
            {
                OnEnteredOrExited?.Invoke(this, new MessageEventArgs("???Someone???", dateTime, message));
            });
        }