tomcat-embed-websocket 启动tomcat 绑定websocket地址完整案例
以下是一个完整的示例,演示如何在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服务器
原文地址: https://www.cveoy.top/t/topic/ihdU 著作权归作者所有。请勿转载和采集!