Ton*_*ony 7 java events listeners netty socket.io
我目前正在使用Socket.io的Java实现,可在此处获取:netty-socketio
我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事件,这就是我感到困惑的地方.
这是我的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
}
基本上我想要发生的是当从客户端收到特定消息时,我需要在另一个类中运行一个函数.我花了持续两个小时阅读Observable,Observer,Interfaces和事件处理程序,但我真的不知道如何处理此问题.
图书馆也提到了这一点DataListener,但我不知道那是什么,因为图书馆里的文档很少.
任何意见或建议将不胜感激.
谢谢
Swe*_*per 34
假设你的班级引发了这个事件A.并且需要监听事件的类被调用B.这个事件被称为SomeEvent.
首先,创建一个名为的接口SomeEventListener:
public interface SomeEventListener {
void onSomeEvent ();
}
Run Code Online (Sandbox Code Playgroud)
如果在事件发生时您想要传递参数(通常是关于事件的某些参数),则可以将其添加到方法中.
然后在A,添加一个字段:
private SomeEventListener listener;
Run Code Online (Sandbox Code Playgroud)
和方法:
public void setSomeEventListener (SomeEventListener listener) {
this.listener = listener;
}
Run Code Online (Sandbox Code Playgroud)
这样,B可以调用setSomeEventListener设置监听器.
当事件发生时,A应该打电话
if (listener != null) listener.onSomeEvent ();
Run Code Online (Sandbox Code Playgroud)
这就是全部A!
在B,您需要实现接口:
public class B implements SomeEventListener {
public void onSomeEvent () {
//do whatever you like when SomeEvent happens.
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样听SomeEvent:
someInstanceOfA.setSomeEventListener (this);
Run Code Online (Sandbox Code Playgroud)
在这个电话之后,所有被SomeEvent提出的人A都可以听B!
使用Observable和Observer模式,我们可以看到它A是一个Observable并且B是一个Observer.
这很简单!
| 归档时间: |
|
| 查看次数: |
21215 次 |
| 最近记录: |