Java 自定义事件处理程序和侦听器
Java custom event handler and listeners
我目前正在研究 Socket.io 的 Java 实现,可在此处获取:netty-socketio
我已经启动了服务器并 运行ning,它的 receiving/sending 消息在客户端和服务器之间很好地传递,但是我需要在接收到某些消息时触发事件,这就是那里我很困惑。
这是我的代码:
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;
}
}
基本上我想要发生的是当从客户端接收到特定消息时,我需要另一个 class 到 运行 中的函数。我花了最后两个小时阅读有关 Observable
、Observer
、Interfaces
和事件处理程序的内容,但我真的不确定如何设置它。
图书馆也提到了这个 DataListener
,但我不知道那是什么,因为图书馆中的文档很少。
如有任何意见或建议,我们将不胜感激。
假设引发事件的 class 名为 A
。而需要监听事件的class被称为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
是一个观察者。
这很简单!
我目前正在研究 Socket.io 的 Java 实现,可在此处获取:netty-socketio
我已经启动了服务器并 运行ning,它的 receiving/sending 消息在客户端和服务器之间很好地传递,但是我需要在接收到某些消息时触发事件,这就是那里我很困惑。
这是我的代码:
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;
}
}
基本上我想要发生的是当从客户端接收到特定消息时,我需要另一个 class 到 运行 中的函数。我花了最后两个小时阅读有关 Observable
、Observer
、Interfaces
和事件处理程序的内容,但我真的不确定如何设置它。
图书馆也提到了这个 DataListener
,但我不知道那是什么,因为图书馆中的文档很少。
如有任何意见或建议,我们将不胜感激。
假设引发事件的 class 名为 A
。而需要监听事件的class被称为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
是一个观察者。
这很简单!