Jetty 如何创建自定义 WebSocket
Posted
技术标签:
【中文标题】Jetty 如何创建自定义 WebSocket【英文标题】:Jetty How to Create Custom 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”类有一个带参数的构造函数,我怎样才能让工厂正确调用那个?
【问题讨论】:
【参考方案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?
【讨论】:
以上是关于Jetty 如何创建自定义 WebSocket的主要内容,如果未能解决你的问题,请参考以下文章
如何让 eclipse-jetty 插件扫描和识别 websocket 类?
Jetty websocket 客户端类 WebSocketClient 线程安全吗?