溫馨提示×

java如何實現websocket通訊

小億
117
2024-12-07 08:59:37
欄目: 編程語言

在Java中實現WebSocket通信,你可以使用Java API for WebSocket (JSR 356) 或者一些流行的庫,如Spring Boot和Tyrus。下面是一個簡單的示例,展示了如何使用Java API for WebSocket創建一個基本的WebSocket服務器。

  1. 首先,確保你的項目中包含了Java WebSocket API。如果你使用的是Maven,可以在pom.xml文件中添加以下依賴:
<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
</dependency>
  1. 創建一個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;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

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

    private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());

    @OnOpen
    public void onOpen(Session session) {
        sessions.add(session);
        System.out.println("New client connected: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("Received message from client " + session.getId() + ": " + message);
        broadcastMessage("Message from server: " + message);
    }

    @OnClose
    public void onClose(Session session) {
        sessions.remove(session);
        System.out.println("Client disconnected: " + session.getId());
    }

    @OnError
    public void onError(Exception error) {
        System.err.println("Error in WebSocket server: " + error.getMessage());
    }

    private void broadcastMessage(String message) {
        for (Session session : sessions) {
            try {
                session.getBasicRemote().sendText(message);
            } catch (IOException e) {
                System.err.println("Error sending message to client: " + e.getMessage());
            }
        }
    }
}
  1. 創建一個WebSocket服務器類,用于啟動服務器并注冊WebSocket端點:
import javax.websocket.server.Server;
import java.util.HashSet;
import java.util.Set;

public class WebSocketServer {

    public static void main(String[] args) {
        Set<Class<?>> classes = new HashSet<>();
        classes.add(WebSocketServer.class);

        Server server = new Server("localhost", 8080, classes);
        try {
            server.start();
            System.out.println("WebSocket server started on port 8080");
            server.wait();
        } catch (Exception e) {
            System.err.println("Error starting WebSocket server: " + e.getMessage());
        }
    }
}

現在,當你啟動WebSocket服務器并訪問ws://localhost:8080/websocket時,你將能夠與服務器進行實時通信。你可以使用任何支持WebSocket的客戶端庫來測試這個服務器。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女