以下是一个完整的示例,演示如何在Tomcat中使用嵌入式WebSocket。

首先,您需要在pom.xml文件中添加tomcat-embed-websocket依赖项:

<dependencies>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-websocket</artifactId>
        <version>9.0.27</version>
    </dependency>
</dependencies>

接下来,您可以创建一个名为WebSocketServer的类,该类将作为WebSocket服务器运行:

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket")
public class WebSocketServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket opened: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("WebSocket received message: " + message);
        try {
            session.getBasicRemote().sendText("Server received message: " + message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("WebSocket closed: " + session.getId());
    }

    @OnError
    public void onError(Session session, Throwable error) {
        System.out.println("WebSocket error: " + session.getId());
        error.printStackTrace();
    }
}

在上面的代码中,我们使用@ServerEndpoint注解将该类标记为WebSocket服务器,并将其绑定到路径“/websocket”。

最后,您可以创建一个名为Main的类,该类将启动Tomcat服务器并将WebSocketServer绑定到指定的地址:

import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;

import java.io.File;

public class Main {

    public static void main(String[] args) throws Exception {
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);

        String contextPath = "/";
        String docBase = new File(".").getAbsolutePath();

        Context context = tomcat.addContext(contextPath, docBase);

        Tomcat.addServlet(context, "WebSocketServer", new WebSocketServer());
        context.addServletMappingDecoded("/websocket", "WebSocketServer");

        tomcat.start();
        tomcat.getServer().await();
    }
}

在上面的代码中,我们首先创建了一个Tomcat实例,并设置其端口号为8080。然后,我们指定了上下文路径和文档基础路径。接下来,我们将WebSocketServer添加到Tomcat的上下文中,并将其映射到路径“/websocket”。

最后,我们启动Tomcat服务器并等待服务器停止。

您可以使用Maven编译和运行该示例:

mvn compile
mvn exec:java -Dexec.mainClass="Main"

现在,您可以通过访问http://localhost:8080/websocket来测试WebSocket服务器

tomcat-embed-websocket 启动tomcat 绑定websocket地址完整案例

原文地址: https://www.cveoy.top/t/topic/ihdU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录