Java gestionnaire d'événements personnalisés et les auditeurs
Je suis en train de jouer avec un Java mise en œuvre de la Prise.io, disponible ici: netty-socketio
J'ai un serveur en cours d'exécution, et sa réception/l'envoi de messages joliment entre le client et le serveur, mais j'ai besoin d'avoir des événements de déclenchement sur certains messages reçus, et c'est là que je suis confus.
Voici mon code:
server.addEventListener("message", clientData.class, new DataListener<clientData>() {
@Override
public void onData(SocketIOClient client, clientData data, AckRequest ackRequest) throws Exception {
System.out.println("Message from client: " + data.getMessage());
}
});
public class clientData{
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Essentiellement ce que j'aimerais arriver, c'est quand un message est reçu à partir d'un client, j'ai besoin d'une fonction dans une autre classe à exécuter. J'ai passé les deux dernières heures de lecture sur Observable
, Observer
, Interfaces
et les gestionnaires d'événements, mais je ne suis vraiment pas sûr de savoir comment le configurer.
La bibliothèque a également fait mention de cette DataListener
, mais je n'ai aucune idée de ce que c'est, comme il y a peu de documentation à la bibliothèque.
Tout commentaires ou des conseils sur ce serait grandement apprécié.
Grâce
Pas de la println est appelé, mais j'ai besoin d'une autre classe d'être informé de ce qui s'est passé. Je pensais que c'était le point de les écouteurs d'événement?
Oui. Et c'est exactement ce que vous avez dans le code. L'auditeur est la classe anonyme implémentant DataListener.
OriginalL'auteur Tony | 2015-11-27
Vous devez vous connecter pour publier un commentaire.
Disons que votre classe qui déclenche l'événement est appelé
A
. Et la classe qui en a besoin pour écouter l'événement est appeléB
. Et l'événement est appeléSomeEvent
.Tout d'abord, créez une interface appelée
SomeEventListener
:Si il y a des arguments que vous souhaitez passer lorsque l'événement se produit (généralement quelque chose à propos de l'événement), vous pouvez l'ajouter à la méthode.
Puis dans
A
, vous ajoutez un champ:et une méthode:
De cette façon,
B
peut appelersetSomeEventListener
pour définir l'auditeur.Lorsque l'événement se produit,
A
doit appelerEt c'est tout là est à
A
!Dans
B
, vous devez implémenter l'interface:Et vous pouvez l'écouter pour
SomeEvent
comme ceci:Et après cet appel, tous les
SomeEvent
soulevées parA
peut être écouté parB
!À l'aide de l'Observable et l'Observateur du modèle, nous pouvons voir que
A
est un fait Observable etB
est un Observateur.C'est facile!
Simple que cela! Merci beaucoup man, j'ai essayé hier soir et je ne pouvais pas obtenir ma tête autour de lui. C'est exactement ce dont j'ai besoin maintenant, merci encore!!
OriginalL'auteur Sweeper