Rumah  >  Artikel  >  Java  >  Pengenalan kepada pembangunan Java Websocket: Bagaimana untuk melaksanakan komunikasi dua hala dengan cepat

Pengenalan kepada pembangunan Java Websocket: Bagaimana untuk melaksanakan komunikasi dua hala dengan cepat

WBOY
WBOYasal
2023-12-02 12:02:231414semak imbas

Java Websocket开发入门:如何快速实现双向通信

Bermula dengan Pembangunan Java Websocket: Cara Melaksanakan Komunikasi Dua Hala Dengan Pantas

Pengenalan:
Dengan pembangunan berterusan teknologi Internet, mencapai komunikasi dua hala masa nyata menjadi semakin penting untuk aplikasi web moden . Sebagai protokol komunikasi berdasarkan HTML5, Websocket menyediakan kami cara untuk melaksanakan komunikasi dua hala dengan cepat. Artikel ini akan memperkenalkan cara menggunakan Java untuk pembangunan Websocket dan menyediakan contoh kod khusus.

1. Apakah itu Websocket ialah protokol untuk komunikasi dua hala antara pelanggan dan pelayan. Ia membolehkan pelayan untuk secara aktif menolak data kepada pelanggan melalui saluran komunikasi yang mengekalkan sambungan jangka panjang, dan pelanggan juga boleh menghantar mesej kepada pelayan. Berbanding dengan protokol HTTP tradisional, Websocket boleh mencapai kependaman yang lebih rendah dan prestasi masa nyata yang lebih tinggi.

2. Pembangunan Websocket dalam Java

Di Java, kami boleh menggunakan beberapa rangka kerja matang untuk melaksanakan pembangunan Websocket dengan cepat. Berikut ialah pengenalan menggunakan rangka kerja Tyrus yang dilaksanakan di Jawa sebagai contoh.

    Memperkenalkan tanggungan
  1. Pertama, kita perlu memperkenalkan kebergantungan rangka kerja Tyrus dalam pom projek. Berikut ialah contoh mudah:
  2. <dependency>
        <groupId>org.glassfish.tyrus</groupId>
        <artifactId>tyrus-server</artifactId>
        <version>1.13</version>
    </dependency>
Antaranya, MyEndpoint ialah kelas Endpoint tersuai kami, digunakan untuk mengendalikan sambungan Websocket, mesej dan acara penutup.
    1. Tulis kelas Endpoint
      Kita perlu menulis kelas Endpoint untuk mengendalikan logik Websocket. Berikut ialah contoh mudah:
    import org.glassfish.tyrus.server.Server;
    
    public class WebsocketServer {
        public static void main(String[] args) {
            Server server = new Server("localhost", 8080, "/websocket", MyEndpoint.class);
    
            try {
                server.start();
                System.out.println("Websocket server started.");
                Thread.currentThread().join();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                server.stop();
            }
        }
    }

    Dalam contoh ini, anotasi @ServerEndpoint("/websocket") digunakan untuk menentukan laluan Websocket, @OnOpen dan @OnClose anotasi digunakan untuk mengendalikan penubuhan sambungan dan acara penutupan masing-masing, dan @OnMessage anotasi digunakan untuk mengendalikan mesej yang dihantar oleh klien. MyEndpoint是我们自定义的Endpoint类,用来处理Websocket的连接、消息和关闭事件。

    1. 编写Endpoint类
      我们需要编写一个Endpoint类来处理Websocket的逻辑。下面是一个简单的示例:
    import javax.websocket.*;
    import javax.websocket.server.ServerEndpoint;
    
    @ServerEndpoint("/websocket")
    public class MyEndpoint {
        @OnOpen
        public void onOpen(Session session) {
            System.out.println("New connection opened: " + session.getId());
        }
    
        @OnMessage
        public void onMessage(String message, Session session) {
            System.out.println("Received message: " + message);
            session.getAsyncRemote().sendText("Server received your message: " + message);
        }
    
        @OnClose
        public void onClose(Session session, CloseReason closeReason) {
            System.out.println("Connection closed: " + session.getId() + " (" + closeReason.getReasonPhrase() + ")");
        }
    }

    在这个示例中,@ServerEndpoint("/websocket")注解用来指定Websocket的路径,@OnOpen@OnClose注解分别用来处理连接建立和关闭事件,@OnMessage注解用来处理客户端发送的消息。

    1. 编写Client端代码
      最后,我们需要编写一个Client端的代码来连接并与Server进行通信。下面是一个简单的示例:
    import javax.websocket.*;
    
    public class WebsocketClient {
        public static void main(String[] args) {
            WebSocketContainer container = ContainerProvider.getWebSocketContainer();
            String uri = "ws://localhost:8080/websocket";
    
            try {
                Session session = container.connectToServer(MyClientEndpoint.class, URI.create(uri));
                session.getBasicRemote().sendText("Hello, Server!");
                session.getBasicRemote().sendText("How are you doing?");
                session.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    其中,MyClientEndpoint

      Tulis kod pelanggan

      Akhir sekali, kita perlu menulis kod pelanggan untuk menyambung dan berkomunikasi dengan pelayan. Berikut ialah contoh mudah:

      rrreee

      Antaranya, MyClientEndpoint ialah kelas Endpoint tersuai kami, digunakan untuk mengendalikan sambungan dan mesej pihak pelanggan.

      🎜Ringkasan: 🎜Melalui langkah di atas, kami dapat merealisasikan pembangunan Java Websocket dengan cepat dan mencapai komunikasi dua hala. Websocket bukan sahaja menyediakan kaedah komunikasi masa nyata untuk aplikasi Web, tetapi juga digunakan secara meluas dalam senario seperti sembang masa nyata, permainan masa nyata dan paparan data masa nyata. 🎜🎜Artikel ini memperkenalkan proses asas pembangunan Java Websocket menggunakan rangka kerja Tyrus dan memberikan contoh kod khusus. Kami berharap pembaca dapat memahami konsep asas dan kaedah pembangunan Websocket melalui artikel ini, dan membantu mereka mencapai komunikasi dua hala masa nyata dalam projek mereka sendiri. 🎜

Atas ialah kandungan terperinci Pengenalan kepada pembangunan Java Websocket: Bagaimana untuk melaksanakan komunikasi dua hala dengan cepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn