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

Java自定义事件处理程序和侦听器,java,events,socket.io,listener,netty,Java,Events,Socket.io,Listener,Netty,我目前正在研究Socket.io的Java实现,可在以下位置获得: 我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事件,这就是我感到困惑的地方 这是我的密码: server.addEventListener("message", clientData.class, new DataListener<clientData>() { @Override public void onData(Soc

我目前正在研究Socket.io的Java实现,可在以下位置获得:

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

这是我的密码:

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;
    }

}
server.addEventListener(“消息”,clientData.class,new DataListener(){
@凌驾
public void onData(SocketIOClient客户端、clientData数据、AckRequest AckRequest)引发异常{
System.out.println(“来自客户端的消息:+data.getMessage());
}
});
公共类ClientData{
字符串消息;
公共字符串getMessage(){
返回消息;
}
公共无效设置消息(字符串消息){
this.message=消息;
}
}
本质上,我希望发生的是,当从客户机接收到特定消息时,我需要在另一个类中运行一个函数。在过去的两个小时里,我一直在阅读有关
Observable
observator
接口
和事件处理程序的内容,但我真的不知道如何设置它

库中也提到了这个
DataListener
,但我不知道那是什么,因为库中几乎没有文档


如果您对此有任何意见或建议,我们将不胜感激。

假设您提出此事件的类称为
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
监听

使用可观察和观察者模式,我们可以看到
A
是可观察的,而
B
是观察者


那很容易

我看这里没有问题。println没有被调用?有例外吗?请让clientData类以大写开头。不,println被调用,但我需要另一个类被通知发生了这种情况。我以为这就是事件的重点听众?是的。这正是代码中的内容。侦听器是实现DataListener的匿名类。很抱歉,我对Socket.io一无所知。以上只是事件和侦听器的一般实现。就这么简单!非常感谢,老兄,我昨晚试过了,但我的脑子都转不过来了。这正是我现在需要的,再次谢谢你,伙计!!