我讨厌问这样一个模糊的问题,但我很难找到一个简单的例子。这是我目前所拥有的:
public class JettyWebSocketServlet extends WebSocketServlet{
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(MyEchoSocket.class);
}
}
@WebSocket
public class MyEchoSocket {
@OnWebSocketMessage
public void onText(WebSocketConnection conn, String message) {
System.out.println("text: " + message);
try {
conn.write(null, new FutureCallback(), "got: " + message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我可以找到的嵌入式 Jetty 示例总是显示如下内容,以启动服务器实例运行,但我不知道如何实例化我的 WebSocketServlet。
Server server = new Server(8080);
server.start();
server.join();
如何创建可以处理 WebSocket 连接请求的嵌入式服务器?
最佳答案
更新:2013 年 12 月 2 日
有关使用 WebSocket 的嵌入式 Jetty 的最新示例,请参阅:
https://github.com/jetty-project/embedded-jetty-websocket-examples
原答案
在测试用例中有一个例子。
简答:
Server server = new Server(8080);
WebSocketHandler wsHandler = new WebSocketHandler()
{
@Override
public void configure(WebSocketServletFactory factory)
{
factory.register(MyEchoSocket.class);
}
};
server.addHandler(wsHandler);
server.start();
server.join();
这将创建一个简单的服务器来处理 1 个上下文,即根上下文。
http://localhost:8080/
如果要将 WebSocketHandler 绑定(bind)到另一个上下文,请将其包装在 ContextHandler 中。
Server server = new Server(8080);
WebSocketHandler wsHandler = new WebSocketHandler()
{
@Override
public void configure(WebSocketServletFactory factory)
{
factory.register(MyEchoSocket.class);
}
};
ContextHandler context = new ContextHandler();
context.setContextPath("/echo");
context.setHandler(wsHandler);
server.addHandler(context);
server.start();
server.join();
这会将你的 websocket 绑定(bind)到
http://localhost:8080/echo/
关于java - 如何创建嵌入式 WebSocket 服务器 Jetty 9?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645341/