java - Jetty 如何创建自定义 WebSocket

标签 java websocket jetty

网上查了一下,发现创建套接字的方法是创建一个带有@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”类有一个带参数的构造函数,我怎样才能让工厂正确调用那个构造函数?

最佳答案

您可以从您的 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

关于java - Jetty 如何创建自定义 WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390944/

相关文章:

java - 镜头套件:FunkSVD

java - 如何在 Jetty 中记录异常堆栈跟踪?

java - 使jetty显示有效配置?

java - SmartGWT:无法检查 SelectItem 的值

java - 阻止java桌面应用程序的分发

java - 为什么在 PageParameters 类型上使用 containsKey() 和 getString() 时出现错误?

php - Laravel laravel-echo-server未收到消息(聊天)

windows - Signalr WebSockets 无法在启用了 Websocket 协议(protocol)的 Windows Server 2012 R2 + IIS 8.5 上工作,但可以在本地开发计算机上工作(Win 10)

c++ - 如何让 WebSocket 服务器在 aws 上运行

postgresql - 带有 Atomikos UserTransaction 的 Jetty 数据源