【问题标题】:jetty 9 websockets onFrame event码头 9 websockets onFrame 事件
【发布时间】:2013-04-27 05:01:23
【问题描述】:

在旧版本的 jetty(7 和 8)上,我们为 websockets 提供了一个 onFrame (http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/websocket/WebSocket.OnFrame.html) 事件。版本 9 中是否有等价物?他们有 WebSocketListener (http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/websocket/api/WebSocketListener.html) 接口,但没有定义 onFrame 方法。

谢谢

【问题讨论】:

    标签: java websocket jetty


    【解决方案1】:

    您需要使用带注释的 websocket 来访问 websocket 框架。

    Javadoc:

    示例套接字:

    package examples;
    
    import org.eclipse.jetty.websocket.api.Session;
    import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
    import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
    import org.eclipse.jetty.websocket.api.annotations.OnWebSocketFrame;
    import org.eclipse.jetty.websocket.api.annotations.WebSocket;
    import org.eclipse.jetty.websocket.api.extensions.Frame;
    
    @WebSocket
    public class AnnotatedFramesSocket
    {
        @OnWebSocketClose
        public void onClose(int statusCode, String reason)
        {
            System.out.printf("onClose(%d, %s)%n",statusCode,reason);
        }
    
        @OnWebSocketConnect
        public void onConnect(Session sess)
        {
            System.out.printf("onConnect(%s)%n",sess);
        }
    
        @OnWebSocketFrame
        public void onFrame(Frame frame)
        {
            System.out.printf("onFrame(%s)%n",frame);
        }
    }
    

    现在,我需要问一下,您为什么需要访问经过扩展后处理的帧?

    【讨论】:

    • 看来我不需要。不知何故,我认为这是针对预处理帧的。
    • @DouaBeri 没有 API 访问来自网络的原始帧,甚至在 Jetty 7/8 上也没有。您获得的帧在到达特定 WebSocket 端点时已通过扩展堆栈进行处理。注意:永远不会有这种访问,正在讨论的扩展(尤其是 mux)会使这变得非常复杂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多