Fermer

août 13, 2018

Créer une application de conversation de bureau et mobile en 30 minutes


Nous allons maintenant créer quelques classes ViewModel très basiques qui serviront à gérer la connexion entre notre composant RadChat et l'application de serveur SimpleHub . Commençons par un HubViewModel :

utilisant Microsoft.AspNet.SignalR.Client;

utilisant Telerik.Windows.Controls;

espace de noms ClientWPF.ViewModels

{[19659007] HubViewModel de classe publique: ViewModelBase

{

Proxy protégé IHubProxy {get; ensemble; }

protected HubConnection Connection {get; ensemble; }

HubViewModel public ()

{

{

this.Connection = new HubConnection (url);

this.Proxy = Connection.CreateHubProxy ("SampleHub");

this.Connection.Start (). Wait ();

}

}

}

La chose importante à noter ici est la création d'un objet HubConnection en utilisant l'URL générée après l'exécution du application serveur dans IIS .

classe publique ChatViewModel: HubViewModel

{

private TextMessage currentMessage;

public Tex tMessage CurrentMessage

{

get {return currentMessage; }

set

{

if (valeur! = Null || valeur! = CurrentMessage)

{

currentMessage = valeur ;

OnPropertyChanged ("CurrentMessage");

}

}

chaîne privée userName; [19659009] chaîne publique UserName

{

get {return userName; }

set

{

if (valeur! = Null || valeur! = UserName)

{

userName = value ;

OnPropertyChanged ("UserName");

}

}

private Author currentAuthor; [19659009] public Author CurrentAuthor

{

get {return currentAuthor; }

set

{

if (valeur! = Null || valeur! = CurrentAuthor)

{

currentAuthor = valeur ;

OnPropertyChanged ("CurrentAuthor");

}

private ObservableCollection < TextMessage > allMessages;

public ObservableCollection < TextMessage > AllMessages

{

get {return allMessages; }

set

{

if (valeur! = Null || valeur! = AllMessages)

{

allMessages = valeur ;

OnPropertyChanged ("AllMessages");

}

}

public ChatViewModel (string userName)

{

this.UserName = userName;

this.CurrentAuthor = new Author (this.UserName);

this.AllMessages = new ObservableCollection < TextMessage > ();

// Appelle la méthode Register sur le serveur

this.Proxy.Invoke ("Register", this.UserName);

// Abonne à la méthode broadcastMessage sur le serveur.

// La méthode OnBroadCastMessage sera déclenchée à chaque appel de la méthode Send sur le serveur.

this.Proxy.On ("broadcastMessage", (chaîne de, chaîne message) => this.OnBroadCastMessage (from, message));

}

void interne OnBroadCastMessage (chaîne de, message de chaîne)

{

App.Current.Dispatcher.BeginInvoke ((action) (() =>

{

this.AllMessages.Add (new TextMessage (new Author (from), message));

}));

}

void interne SendCurrentMessage ()

{

if (! String.IsNullOrEmpty ((this.CurrentMessage as TextMessage) .Text)) [19659009] {

// Appelle la méthode d'envoi sur le serveur, qui à son tour appelle le message broadcastMessage de tous les clients.

this.Proxy.Invoke ("Envoyer", this.UserName, this.CurrentMessage.Text);




Source link