Цель состоит в том, чтобы подключить клиент к WebSocket с помощью этого URL: ws: // localhost: 4550/api/mywebsocket
, и есть некоторые выводы из моего вывода из моего вывода из моего вывода из моего вывода. Приложение класс: < /p>
Код: Выделить всё
package com.main;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class App {
public static void main(String[] args) {
Server server = new Server(4550);
ServletContextHandler context = new
ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/api");
server.setHandler(context);
ServletHolder wsHolder = new ServletHolder(MyWebSocketServlet.class);
context.addServlet(wsHolder, "/");
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
} finally {
server.destroy();
}
}
}
< /code>
Это класс mywebsocketservlet: < /p>
package com.main;
import org.eclipse.jetty.websocket.server.JettyWebSocketServlet;
import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory;
import jakarta.servlet.annotation.WebServlet;
@WebServlet(urlPatterns = "/myWebSocket")
public class MyWebSocketServlet extends JettyWebSocketServlet {
@Override
protected void configure(JettyWebSocketServletFactory factory) {
factory.register(MyWebSocketHandler.class);
}
}
< /code>
и, наконец, класс mywebsockethandler: < /p>
package com.main;
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
@WebSocket
public class MyWebSocketHandler {
@OnWebSocketConnect
public void onConnect(Session session) {
System.out.println("Connected: " + session.getRemoteAddress());
}
@OnWebSocketMessage
public void onMessage(Session session, String message) {
System.out.println("Message received: " + message);
try {
session.getRemote().sendString("Echo: " + message);
} catch (Exception e) {
e.printStackTrace();
}
}
@OnWebSocketClose
public void onClose(Session session, int statusCode, String reason) {
System.out.println("Closed: " + reason);
}
}
< /code>
в файле сборки Gradle Следующие библиотеки импортируются: < /p>
implementation 'org.eclipse.jetty:jetty-server:11.0.7'
implementation 'org.eclipse.jetty:jetty-servlet:11.0.7'
implementation 'org.eclipse.jetty.websocket:websocket-jetty-server:11.0.7'
Подробнее здесь: https://stackoverflow.com/questions/794 ... socket-v11