Java自定义事件处理程序和侦听器

我目前正在使用Socket.io的Java实现,可在此处获取: netty-socketio

我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事件,这就是我感到困惑的地方。

这是我的代码:

server.addEventListener("message", clientData.class, new DataListener() { @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; } 

}

基本上我想要发生的是当从客户端收到特定消息时,我需要在另一个类中运行一个函数。 我花了最近两个小时阅读ObservableObserverInterfaces和事件处理程序,但我真的不确定如何设置它。

该库还提到了这个DataListener ,但我不知道那是什么,因为库中的文档很少。

任何意见或建议将不胜感激。

谢谢

让我们说你举起这个事件的class级叫做A 需要监听事件的类称为B 这个事件叫做SomeEvent

首先,创建一个名为SomeEventListener的接口:

 public interface SomeEventListener { void onSomeEvent (); } 

如果在事件发生时您想要传递参数(通常是关于事件的某些参数),则可以将其添加到方法中。

然后在A ,添加一个字段:

 private SomeEventListener listener; 

和方法:

 public void setSomeEventListener (SomeEventListener listener) { this.listener = listener; } 

这样, B可以调用setSomeEventListener来设置监听器。

当事件发生时, A应该打电话

 if (listener != null) listener.onSomeEvent (); 

这就是A的全部!

B ,您需要实现接口:

 public class B implements SomeEventListener { public void onSomeEvent () { //do whatever you like when SomeEvent happens. } } 

你可以像这样听SomeEvent

 someInstanceOfA.setSomeEventListener (this); 

在此调用之后, A提出的所有SomeEvent都可以被B听到!

使用Observable和Observer模式,我们可以看到A是Observable而B是Observer。

这很简单!