mvn archetype:generate -DgroupId=com.example.websocket -DartifactId=my-websocket-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
<dependencies>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-server</artifactId>
<version>1.14</version>
</dependency>
</dependencies>
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class MyWebSocketEndpoint {
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket opened: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("Received message: " + message);
try {
session.getBasicRemote().sendText("Server Echo: " + message);
} catch (Exception e) {
e.printStackTrace();
}
}
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket closed: " + session.getId());
}
@OnError
public void onError(Throwable error) {
System.out.println("WebSocket error: " + error.getMessage());
}
}
import org.glassfish.tyrus.server.Server;
public class ServerApp {
public static void main(String[] args) {
Server server = new Server("localhost", 8080, "/myapp", MyWebSocketEndpoint.class);
try {
server.start();
System.out.println("WebSocket server started!");
Thread.sleep(Long.MAX_VALUE);
} catch (Exception e) {
e.printStackTrace();
} finally {
server.stop();
System.out.println("WebSocket server stopped!");
}
}
}
mvn clean install
mvn exec:java -Dexec.mainClass="com.example.websocket.ServerApp"