Rumah > Java > javaTutorial > teks badan

Bagaimana untuk membangunkan aplikasi Websocket menggunakan Java

PHPz
Lepaskan: 2023-12-02 09:54:37
asal
1301 orang telah melayarinya

Bagaimana untuk membangunkan aplikasi Websocket menggunakan Java

WebSocket ialah protokol baharu yang diperkenalkan oleh HTML5, digunakan untuk mewujudkan sambungan yang panjang antara pelanggan dan pelayan. Seperti HTTP, ia boleh berjalan pada port web standard, juga boleh melintasi tembok api dan pelayan proksi, dan telah digunakan secara meluas dalam senario seperti komunikasi masa nyata dan pemberitahuan tolak.

Sebagai bahasa pengaturcaraan yang berkuasa, Java juga menyediakan pelbagai API dan perpustakaan berkaitan WebSocket Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan aplikasi Websocket dan menyediakan contoh kod khusus.

1. Pengenalan kepada API WebSocket

Java EE 7 menyediakan API Java JSR-356 untuk WebSocket, yang merangkumi antara muka sisi klien dan sisi pelayan WebSocket. Anda boleh menggunakan bekas Java EE 7 (seperti GlassFish, Tomcat, dll.) atau perpustakaan pihak ketiga (seperti Jetty, Tyrus, dll.) untuk melaksanakan fungsi WebSocket.

Antara muka teras dan kelas Java WebSocket API adalah seperti berikut:

  • Sesi: Mewakili sesi sambungan WebSocket yang melaluinya mesej boleh dihantar dan diterima.
  • Titik Akhir: Mewakili titik akhir WebSocket dan melaksanakan logik teras WebSocket, termasuk sambungan, penghantaran mesej, pengendalian ralat, dsb.
  • MessageHandler: Mewakili pengendali mesej WebSocket, digunakan untuk menerima dan memproses pelbagai jenis mesej.

Aplikasi WebSocket boleh dilaksanakan dengan mudah menggunakan Java WebSocket API, dan kami akan memperkenalkan contoh khusus seterusnya. Contoh aplikasi WebSocket 2.1 Pelaksanaan titik akhir WebSocket sebelah pelayan

Untuk melaksanakan aplikasi WebSocket pada bahagian pelayan, kita perlu mencipta titik akhir WebSocket. Kod titik akhir mudah adalah seperti berikut:

import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;

@ServerEndpoint(value = "/chat")
public class ChatEndpoint {

    @OnMessage
    public void onMessage(Session session, String message) throws IOException {
        // 处理收到的消息
        session.getBasicRemote().sendText("You said: " + message);
    }
}
Salin selepas log masuk

Tentukan laluan URI titik akhir melalui anotasi @ServerEndpoint, di sini ialah "/chat". Pada titik akhir, anotasi @OnMessage dilaksanakan untuk menerima dan memproses mesej yang dihantar oleh pelanggan. Dalam kaedah ini, kita boleh memproses mesej yang diterima dan menghantar mesej respons kepada pelanggan. . titik akhir WebSocket pelanggan. Dalam kaedah utama, kami menggunakan WebSocketContainer untuk menyambung ke bahagian pelayan dan menghantar 5 mesej. Selepas menerima respons sebelah pelayan, kaedah onMessage akan dipanggil untuk diproses dan CountDownLatch akan digunakan untuk melaksanakan penantian segerak program.

    2.3 Pelaksanaan mesej siaran sebelah pelayan
  • Dalam aplikasi WebSocket, kadangkala pelayan perlu menyiarkan mesej kepada semua pelanggan. Berikut ialah contoh mudah:
  • import javax.websocket.ClientEndpoint;
    import javax.websocket.OnMessage;
    import javax.websocket.Session;
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.util.concurrent.CountDownLatch;
    
    @ClientEndpoint
    public class ChatClientEndpoint {
    
        private CountDownLatch latch;
    
        public ChatClientEndpoint(CountDownLatch latch) {
            this.latch = latch;
        }
    
        @OnMessage
        public void onMessage(Session session, String message) {
            System.out.println("Received message: " + message);
            latch.countDown();
        }
    
        public static void main(String[] args) throws Exception {
            final int messageCount = 5;
            final CountDownLatch latch = new CountDownLatch(messageCount);
    
            URI uri = new URI("ws://localhost:8080/chat");
            ChatClientEndpoint client = new ChatClientEndpoint(latch);
    
            WebSocketContainer container = ContainerProvider.getWebSocketContainer();
            container.connectToServer(client, uri);
    
            for (int i = 0; i < messageCount; i++) {
                String message = "Hello " + i;
                client.sendMessage(message);
                System.out.println("Sent message: " + message);
            }
    
            latch.await();
            container.close();
        }
    
        public void sendMessage(String message) {
            try {
                session.getBasicRemote().sendText(message);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    Salin selepas log masuk
    Dalam kod ini, kami mengekalkan senarai semua sesi WebSocket, menambah sesi baharu dalam kaedah @OnOpen dan mengalih keluar sesi dalam kaedah @OnClose. Pada masa yang sama, mesej siaran dihantar ke semua sesi WebSocket dalam kaedah penyiaran.
  • 3. Ringkasan

    WebSocket ialah protokol baharu yang sangat berkuasa yang membolehkan program mewujudkan komunikasi masa nyata dan fungsi tolak masa nyata. Java juga menyediakan sokongan API dan perpustakaan yang kaya untuk WebSocket. Artikel ini menerangkan cara membangunkan aplikasi WebSocket menggunakan Java dan memberikan contoh kod khusus. Saya harap artikel ini boleh membantu untuk membangunkan aplikasi WebSocket dalam Java.

    Atas ialah kandungan terperinci Bagaimana untuk membangunkan aplikasi Websocket menggunakan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!