有没有办法创建一个全局侦听器来接收来自JavaWebSocket的消息?

有没有办法创建一个全局侦听器来接收来自JavaWebSocket的消息?,java,angularjs,websocket,ionic,Java,Angularjs,Websocket,Ionic,我正在使用AngularJS、Ionic和Java作为后端。我正在使用websocket创建实时聊天 我想设置一个侦听器,在我的应用程序中的任何位置接收所有消息,以处理它并保持它不带nodejs 有什么方法可以做到这一点吗?我认为在Java WebSocket API中没有一种准备充分的方法来满足这些要求。尽管如此,使用JMX也可以不费一点力气。但是,您只需编写一个父端点类,让每个端点类按如下方式对其进行扩展即可: // Assumes you use some dependency injec

我正在使用AngularJS、Ionic和Java作为后端。我正在使用websocket创建实时聊天

我想设置一个侦听器,在我的应用程序中的任何位置接收所有消息,以处理它并保持它不带nodejs


有什么方法可以做到这一点吗?

我认为在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接收的消息。我希望能够管理整个项目中的所有消息您是否尝试过类似的模块?