Rumah >Java >javaTutorial >Menggunakan API WebSocket untuk komunikasi masa nyata dalam pembangunan API Java

Menggunakan API WebSocket untuk komunikasi masa nyata dalam pembangunan API Java

PHPz
PHPzasal
2023-06-18 09:00:141163semak imbas

Dengan perkembangan berterusan teknologi Internet, komunikasi masa nyata telah menjadi bahagian yang amat diperlukan dalam banyak sistem aplikasi. Dalam bidang aplikasi Web, teknologi WebSocket telah menjadi salah satu cara utama komunikasi masa nyata. Pada platform Java, API Java juga menyediakan satu set API WebSocket, yang boleh memudahkan pembangunan WebSocket.

Artikel ini akan menumpukan pada cara menggunakan API WebSocket untuk komunikasi masa nyata dalam pembangunan API Java Dalam proses melaksanakan komunikasi WebSocket, kami akan menerangkannya dalam aspek berikut:

    <.> Pengenalan kepada protokol WebSocket
  1. Penggunaan asas API WebSocket
  2. Model benang API WebSocket
  3. Senario penggunaan lanjutan API WebSocket
1. Pengenalan kepada protokol WebSocket

Protokol WebSocket ialah protokol baharu dalam HTML5, yang membolehkan komunikasi dupleks penuh antara penyemak imbas dan pelayan. Sebelum kemunculan protokol WebSocket, komunikasi antara penyemak imbas dan pelayan adalah berdasarkan protokol HTTP Protokol HTTP adalah komunikasi separuh dupleks, iaitu, ia hanya boleh berkomunikasi dalam satu cara, dan pelayan tidak dapat secara aktif. menghantar mesej kepada pelanggan. Protokol WebSocket membenarkan komunikasi dua hala yang benar antara pelayan dan klien.

Ciri penting protokol WebSocket ialah ia berdasarkan protokol TCP. Apabila membuat sambungan WebSocket, pelanggan dan pelayan akan melakukan jabat tangan TCP terlebih dahulu, dan kemudian merangkum data protokol WebSocket dalam bingkai data protokol HTTP untuk mencapai komunikasi dua hala.

2. Penggunaan asas API WebSocket

API WebSocket dalam API Java disertakan dalam pakej javax.websocket, yang menyediakan satu set antara muka API standard WebSocket dan perpustakaan kelas yang berkaitan, yang boleh digunakan Digunakan untuk melaksanakan pelbagai operasi komunikasi WebSocket.

Berikut ialah proses penggunaan asas API WebSocket:

    Mencipta pelayan WebSocket
Anda perlu menentukan titik akhir pelayan yang melaluinya WebSocket sambungan boleh diwujudkan dan menerima dan menghantar mesej. Titik akhir ini perlu mewarisi kelas javax.websocket.Endpoint dan melaksanakan kaedah utama seperti onOpen, onClose, onMessage dan onError.

    Mencipta klien WebSocket
Anda perlu menentukan alamat pelayan WebSocket dan menggunakan objek klien WebSocket untuk menyambung ke pelayan.

    Hantar mesej
Komunikasi WebSocket adalah berdasarkan mesej dan anda boleh menggunakan kaedah hantar yang disediakan oleh antara muka javax.websocket.Session untuk menghantar mesej.

    Terima mesej
Logik penerimaan mesej perlu dilaksanakan dalam kedua-dua pelayan dan klien Anda boleh mengatasi kaedah onMessage untuk melaksanakan logik yang sepadan.

Berikut ialah contoh penggunaan API WebSocket:

Kod sisi pelayan:

@ServerEndpoint("/server")
public class WebSocketServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket opened: " + session.getId());
    }

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

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("WebSocket received message: " + message);
        try {
            session.getBasicRemote().sendText("Server received message: " + message);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        System.out.println("WebSocket error: " + throwable.getMessage());
    }
}

Kod sisi pelanggan:

URI uri = new URI("ws://localhost:8080/server");

WebSocketContainer container = ContainerProvider.getWebSocketContainer();
Session session = container.connectToServer(MyClient.class, uri);

session.getBasicRemote().sendText("Hello Server!");

Nota: Dalam pelanggan, MyClient .class perlu melaksanakan antara muka javax.websocket.ClientEndpoint dan mengatasi kaedah onMessage.

3. Model benang API WebSocket

Model benang dalam API WebSocket agak istimewa. Komunikasi WebSocket dibina pada bekas Web (seperti Tomcat, Jetty, dll.), jadi model benang dalam API WebSocket juga bergantung pada model benang bekas Web. Memandangkan WebSocket mencipta beberapa kumpulan benang tetap dalam bekas Web, perhatian khusus perlu diberikan kepada isu keselamatan benang.

WebSocket API menyediakan dua anotasi: @OnOpen dan @OnClose, yang boleh digunakan untuk melaksanakan operasi logik yang berkaitan apabila mewujudkan dan memutuskan sambungan WebSocket. Dalam kedua-dua kaedah panggil balik ini, jika operasi pangkalan data atau operasi lain yang memakan masa diperlukan, sambungan hendaklah dilepaskan serta-merta, jika tidak prestasi bekas web mungkin terjejas.

4. Senario penggunaan lanjutan API WebSocket

Selain senario penggunaan asas di atas, API WebSocket juga menyediakan beberapa senario penggunaan lanjutan, seperti menggunakan anotasi untuk menulis titik akhir dan menggunakan pemintas untuk menulis Titik akhir, menulis titik akhir secara pemprograman dan banyak lagi.

Disebabkan keterbatasan ruang, artikel ini tidak dapat memperkenalkan senario penggunaan lanjutan ini secara terperinci Pembaca boleh mengkajinya dalam kombinasi dengan dokumen rasmi.

Ringkasan

Artikel ini terutamanya memperkenalkan cara menggunakan API WebSocket untuk komunikasi masa nyata dalam pembangunan API Java, termasuk pengenalan kepada protokol WebSocket, penggunaan asas API WebSocket dan threading model API WebSocket dan senario penggunaan lanjutan untuk API WebSocket. Dengan mengkaji artikel ini, pembaca boleh mempunyai pemahaman awal tentang idea pengaturcaraan dan kaedah pelaksanaan API WebSocket, dan kemudian lebih baik menangani keperluan pembangunan komunikasi masa nyata.

Atas ialah kandungan terperinci Menggunakan API WebSocket untuk komunikasi masa nyata dalam pembangunan API Java. 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