如何创建嵌入式 WebSocket 服务器 Jetty 9? [英] How do I create an embedded WebSocket server Jetty 9?

查看:27
本文介绍了如何创建嵌入式 WebSocket 服务器 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 示例总是显示如下内容,以启动服务器实例运行,但我不知道如何实例化我的 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 的嵌入式 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.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/ExampleEchoServer.java

简答:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆