如何创建嵌入式WebSocket服务器Jetty 9? [英] How do I create an embedded WebSocket server Jetty 9?
问题描述
我讨厌问这么模糊的问题,但我很难找到一个简单的例子。以下是我到目前为止的内容:
I hate asking such a vague question, but I'm having a hard time finding a simple example. Here's what I have so far:
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示例find总是显示如下所示的内容,以启动Server实例运行,但我不知道如何实例化我的WebSocketServlet。
The embedded Jetty examples I can find always show something like the following, to start a Server instance running, but I don't know how to instantiate my WebSocketServlet.
Server server = new Server(8080);
server.start();
server.join();
如何创建可以处理WebSocket连接请求的嵌入式服务器?
How do I create an embedded server that can handle WebSocket connection requests?
推荐答案
更新日期:2013年12月2日
带有WebSocket的Embedded Jetty的日期示例,请参阅:
For an up to date example of the Embedded Jetty with WebSocket see:
https://github.com/jetty-project/embedded-jetty-websocket-examples
原始答案
测试用例中有一个例子。
There's an example found in the test cases.
简答:
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个上下文的简单服务器,即根上下文。
This will create a simple server that handles 1 context, the root context.
http://localhost:8080/
如果要将WebSocketHandler绑定到另一个上下文,请将其包装在ContextHandler中。
If you want to bind the WebSocketHandler to another context, wrap it in a 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绑定到
This will bind your websocket to
http://localhost:8080/echo/
这篇关于如何创建嵌入式WebSocket服务器Jetty 9?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!