当前位置: 首页 > 面试题库 >

如何创建嵌入式WebSocket服务器Jetty 9?

楚鸿波
2023-03-14
问题内容

我讨厌问这样一个模糊的问题,但是我很难找到一个简单的例子。这是我到目前为止的内容:

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示例始终显示如下内容,以启动运行的Server实例,但我不知道如何实例化WebSocketServlet。

        Server server = new Server(8080);
        server.start();
        server.join();

如何创建可以处理WebSocket连接请求的嵌入式服务器?


问题答案:

更新:2013年12月2日

有关带有WebSocket的嵌入式码头的最新示例,请参见:

https://github.com/jetty-project/embedded-jetty-websocket-
examples

原始答案

在测试用例中有一个示例。

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个上下文(即根上下文)的简单服务器。

http://localhost:8080/

如果要将WebSocketHandler绑定到另一个上下文,请将其包装在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绑定到

http://localhost:8080/echo/


 类似资料:
  • 问题内容: 是否有任何教程或指南显示如何用PHP编写一个简单的Websockets服务器?我曾尝试在Google上寻找它,但没有找到很多。我找到了phpwebsockets,但是现在已经过时了,不支持最新的协议。我尝试自己更新它,但似乎不起作用。 和客户: 如果我的代码有任何错误,您可以帮我解决它吗?Firefox中的Concole说 问题答案: 我和您最近在同一条船上,这是我的工作: 1)我使用

  • 问题内容: 我正在使用node.js的WSwebsocket库。目前,我正在运行ws服务器。现在,我想通过使用安全连接(即通过实施wss协议以及库支持TLS连接)来保护此连接。我进行了一些搜索,发现这很容易确保安全:wss和具有自签名证书的wss。 两者都不是很详细,第二个链接上的文章介绍了带有自签名证书的wss。我想知道的是,仅创建自签名证书并部署到我的生产环境是否就足够了?还是我需要像创建HT

  • 我正在开发一个cron,我正在使用一个web客户端向一个rest API发送一个post请求。我不想让嵌入式服务器保持开机状态,因为cron需要在几秒钟内完成其任务。但当我不使用服务器时: 更新:我试过了 但是获取由:java.lang.IllegalStateException:org.springframework.boot.web.reactive.context.AnnotationCon

  • 每个Spring Boot Web应用程序都包含一个嵌入式Web服务器。 此功能会导致许多操作方法问题,包括如何更改嵌入式服务器以及如何配置嵌入式服务器。 本节回答了这些问题。 9.3.1 使用其他Web服务器 许多Spring Boot启动器都包含默认的嵌入式容器。 对于servlet堆栈应用程序,spring-boot-starter-web包括tomcat,包括spring-boot-sta

  • nodejs版本:0.8.6 我使用openssl创建了一个ssl csr文件,并使用以下命令:openssl req-nodes-newkey rsa:2048-keyout myserver.key-out myserver.csr null 我试着检查这个问题:openssl s_client-connect my_dns:443//my_dns当然指向我的nodejs服务器 结果:已连接(

  • ?> 完全协程化的Websocket服务器实现,继承自Co\Http\Server,底层提供了对WebSocket协议的支持,在此不再赘述,只说差异。 !> 此章节在v4.4.13后可用。 完整示例 Co\run(function () { $server = new Co\Http\Server("127.0.0.1", 9502, false); $server->handle