有没有办法创建一个全局侦听器来接收来自JavaWebSocket的消息?
我正在使用AngularJS、Ionic和Java作为后端。我正在使用websocket创建实时聊天 我想设置一个侦听器,在我的应用程序中的任何位置接收所有消息,以处理它并保持它不带nodejs有没有办法创建一个全局侦听器来接收来自JavaWebSocket的消息?,java,angularjs,websocket,ionic,Java,Angularjs,Websocket,Ionic,我正在使用AngularJS、Ionic和Java作为后端。我正在使用websocket创建实时聊天 我想设置一个侦听器,在我的应用程序中的任何位置接收所有消息,以处理它并保持它不带nodejs 有什么方法可以做到这一点吗?我认为在Java WebSocket API中没有一种准备充分的方法来满足这些要求。尽管如此,使用JMX也可以不费一点力气。但是,您只需编写一个父端点类,让每个端点类按如下方式对其进行扩展即可: // Assumes you use some dependency injec
有什么方法可以做到这一点吗?我认为在Java WebSocket API中没有一种准备充分的方法来满足这些要求。尽管如此,使用JMX也可以不费一点力气。但是,您只需编写一个父端点类,让每个端点类按如下方式对其进行扩展即可:
// Assumes you use some dependency injection framework
@Component
// Your own POJO to be notified of every socket events
public class WebSocketListener {
public void onOpen(String id) {
// Your logic here
}
public void onMessage(String id, Object message) {
// Your logic here
}
public void onClose(String id) {
// Your logic here
}
}
// A parent class to notify your own global listener
// Extend it if you want to listen socket's event through some specific path
public abstract class NotifiableEndpoint {
@Inject
private WebSocketListener listener;
@OnOpen
public void onOpen(Session session) {
listener.onOpen(session.getId());
}
@OnMessage
public void onMessage(Session session, StringOrByteBuffer data) {
listener.onOpen(session.getId(), data);
}
@OnClose
public void OnClose(Session session) {
listener.onOpen(session.getId());
}
}
// A concrete class to write your business logic
@ServerEndpoint("/hello")
public class YourEndpoint extends NotifiableEndpoint {
// Your logic
}
不要使用继承,通过反射可能会起作用。您使用的是Tomcat吗?看看吧,当然。我正在使用tomcat,我已经创建了一个websocket。问题是我只能在视图中管理从websocket接收的消息。我希望能够管理整个项目中的所有消息您是否尝试过类似的模块?