我目前正在使用Socket.io的Java实现,可在此处获取:netty-socketio
我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事件,这就是我感到困惑的地方。
这是我的代码:
Observable
}
基本上我想要发生的是当从客户端收到特定消息时,我需要在另一个类中运行一个函数。我花了最近两个小时阅读Observer
,Interfaces
,DataListener
和事件处理程序,但我真的不确定如何设置它。
图书馆也提到了这个{{1}},但我不知道那是什么,因为图书馆里的文档很少。
对此的任何意见或建议将不胜感激。
由于
答案 0 :(得分:30)
让我们说你举起这个事件的班级被称为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);
在此次通话后,SomeEvent
可以收听A
提出的所有B
!
使用Observable和Observer模式,我们可以看到A
是一个Observable,B
是一个观察者。
这很简单!