91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java實現websocket如何處理連接

小樊
81
2024-11-21 22:58:50
欄目: 編程語言

在Java中,我們可以使用Java API for WebSocket (JSR 356)來處理WebSocket連接。以下是一個簡單的示例,展示了如何使用Java Servlet API創建一個WebSocket端點來處理客戶端連接。

  1. 首先,確保你的項目已經包含了Java WebSocket庫。如果你使用的是Maven,可以在pom.xml文件中添加以下依賴:
<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
</dependency>
  1. 創建一個WebSocket端點類,例如MyWebSocketEndpoint.java
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 = "/my-websocket", configurator = MyWebSocketConfigurator.class)
public class MyWebSocketEndpoint {

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

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

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

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

    @OnError
    public void onError(Throwable error) {
        System.err.println("Error occurred: " + error.getMessage());
    }

    private void broadcastMessage(String message) {
        for (Session session : sessions) {
            if (session.isOpen()) {
                try {
                    session.getBasicRemote().sendText(message);
                } catch (IOException e) {
                    System.err.println("Error sending message to session " + session.getId() + ": " + e.getMessage());
                }
            }
        }
    }
}
  1. 創建一個配置類,例如MyWebSocketConfigurator.java,用于設置WebSocket端點的屬性(如果需要):
import javax.websocket.server.ServerEndpointConfig;

@ServerEndpointConfig(configurator = MyWebSocketConfigurator.class)
public class MyWebSocketConfigurator extends ServerEndpointConfig.Configurator {
    // 可以在這里設置端點的屬性,如果需要的話
}
  1. 創建一個WebSocket服務器,例如WebSocketServer.java
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(MyWebSocketEndpoint.class);

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

現在,當你運行WebSocketServer類時,它將啟動一個WebSocket服務器,監聽端口8080上的/my-websocket路徑。當客戶端連接到這個端點時,MyWebSocketEndpoint類中的onOpen方法將被調用,并將客戶端會話添加到sessions集合中。當客戶端發送消息時,onMessage方法將被調用,并將消息廣播給所有連接的客戶端。

0
攀枝花市| 方山县| 太原市| 垦利县| 义乌市| 石狮市| 扶余县| 司法| 兴文县| 商城县| 和政县| 苏尼特右旗| 深州市| 黄冈市| 积石山| 咸阳市| 潞城市| 绥芬河市| 宽甸| 蕉岭县| 和田县| 巴彦淖尔市| 内江市| 津市市| 新河县| 上虞市| 乾安县| 藁城市| 乌鲁木齐县| 会昌县| 洛隆县| 信宜市| 兴义市| 万安县| 呼和浩特市| 甘洛县| 汉寿县| 赤峰市| 上饶县| 盐池县| 夏河县|