【问题标题】:Jetty How to Create Custom WebSocketJetty 如何创建自定义 WebSocket
【发布时间】:2014-12-09 23:42:25
【问题描述】:

上网查了一下,发现创建套接字的方法是创建一个带有@WebSocket注解的类,并为事件使用所需的注解方法。为了使用这个套接字,一个套接字处理程序是这样使用的:

import org.eclipse.jetty.websocket.server.WebSocketHandler;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;

import rsvp.RSVPSocket;

public class RSVPWebSocketHandler extends WebSocketHandler
{

    @Override
    public void configure ( WebSocketServletFactory factory )
    {
        factory.register( MySocket.class );
    }

}

我的问题是:如果“MySocket”类有一个带参数的构造函数,我怎样才能让工厂正确调用那个?

【问题讨论】:

    标签: java websocket jetty


    【解决方案1】:

    您可以从您的 servlet 创建套接字。例如:

    @WebServlet(name = "MyWebSocketServlet", urlPatterns = {"/myurl"})
    public class MyWebSocketServlet extends WebSocketServlet {
        private final static int IDLE_TIME = 60 * 1000;
    
        @Override
        public void configure(WebSocketServletFactory factory) {
            factory.getPolicy().setIdleTimeout(IDLE_TIME);
            factory.setCreator(new CustomWebSocketCreator());
        }
    }
    

    还有 CustomWebSocketCreator:

    public class CustomWebSocketCreator implements WebSocketCreator {
    
        @Override
        public Object createWebSocket(ServletUpgradeRequest req, ServletUpgradeResponse resp) {
            return new MySocket();
        }
    }
    

    更多详情: http://www.eclipse.org/jetty/documentation/9.1.5.v20140505/jetty-websocket-server-api.html

    【讨论】:

      【解决方案2】:

      根据Jetty doc,您应覆盖您自己自定义派生的WebSocketCreator 类的createWebSocket 方法(将您的创建者的实例传递给configure

      另请参阅此答案How do I access instantiated WebSockets in Jetty 9?

      【讨论】:

        猜你喜欢
        • 2012-08-01
        • 2013-03-16
        • 1970-01-01
        • 1970-01-01
        • 2021-04-16
        • 2014-08-05
        • 2015-12-08
        • 2016-07-10
        • 1970-01-01
        相关资源
        最近更新 更多