Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menggunakan WebSocket dengan rangka kerja ZK?

Bagaimana untuk menggunakan WebSocket dengan rangka kerja ZK?

王林
王林asal
2023-06-04 08:51:181252semak imbas

Apabila aplikasi web menjadi lebih kompleks dan memerlukan prestasi masa nyata yang lebih tinggi, protokol HTTP tradisional tidak lagi mencukupi untuk memenuhi keperluan ini. Sebagai protokol rangkaian baharu, WebSocket boleh mencapai komunikasi dupleks penuh dalam aplikasi Web Ia mempunyai ciri-ciri kependaman rendah dan konkurensi tinggi Ia telah menjadi salah satu teknologi utama aplikasi Web moden.

ZK ialah rangka kerja aplikasi web yang dibangunkan berdasarkan Java, yang ringan, cekap dan mudah diselenggara. Rangka kerja ZK boleh menyediakan pembangun dengan komponen yang kaya, gaya tersuai, acara, pengikatan dan ciri lain untuk membantu pembangun membina aplikasi web dengan cepat. Walau bagaimanapun, dari segi merealisasikan interaksi masa nyata, rangka kerja ZK tidak mencukupi untuk memenuhi beberapa aplikasi web permintaan tinggi. Oleh itu, artikel ini akan memperkenalkan cara menggunakan teknologi WebSocket dalam rangka kerja ZK untuk mencapai kependaman rendah, komunikasi masa nyata berkonkurensi tinggi.

1. Konsep asas WebSocket

WebSocket ialah protokol rangkaian untuk komunikasi dupleks penuh pada satu sambungan TCP. Berbanding dengan protokol HTTP, WebSocket mempunyai kelebihan berikut:

  1. Sambungan lama: Selepas WebSocket mewujudkan sambungan, pihak yang berkomunikasi boleh mengekalkan status sambungan, menjadikan komunikasi seterusnya lebih cekap.
  2. Komunikasi dua hala: WebSocket boleh mencapai komunikasi dua hala, membolehkan pelanggan dan pelayan bertukar data dalam masa nyata.
  3. Latensi rendah: Komunikasi WebSocket tidak memerlukan proses jabat tangan dan pelepasan yang kerap, jadi kependaman lebih rendah dan kelajuan lebih pantas.
  4. Sokongan data binari: WebSocket menyokong penghantaran data binari dan boleh digunakan untuk menghantar fail media seperti imej dan audio.

2. Menggunakan WebSocket dalam rangka kerja ZK

Menggunakan WebSocket dalam rangka kerja ZK memerlukan melengkapkan langkah berikut:

  1. Memperkenalkan Fail perpustakaan berkaitan WebSocket

Dalam projek ZK, kami perlu memperkenalkan fail perpustakaan yang berkaitan bagi Java WebSocket API. Anda boleh menambah konfigurasi pergantungan berikut dalam fail pom.xml projek:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
</dependency>
  1. Melaksanakan WebSocket's ServerEndpoint

Dalam kod Java, kita perlu menulis kelas untuk melaksanakan WebSocket's Antara muka ServerEndpoint. Dalam kelas ini, kita perlu melaksanakan kaedah onOpen, onMessage, onError, onClose dan lain-lain. Berikut ialah pelaksanaan mudah:

@ServerEndpoint("/websocket")
public class WebSocketServer {
    
    private static final Set<Session> SESSSIONS = Collections.synchronizedSet(new HashSet<Session>());
    
    @OnOpen
    public void onOpen(Session session) {
        SESSSIONS.add(session);
    }
    
    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        for (Session s : SESSSIONS) {
            s.getBasicRemote().sendText(message);
        }
    }
    
    @OnError
    public void onError(Throwable t) {
        t.printStackTrace();
    }
    
    @OnClose
    public void onClose(Session session) {
        SESSSIONS.remove(session);
    }
}

Dalam kod di atas, kami menggunakan anotasi @ServerEndpoint untuk mengisytiharkan kelas ini sebagai kelas pelayan WebSocket dan laluan permintaan WebSocket ialah "/websocket". SESSIONS digunakan untuk menyimpan objek Session sambungan WebSocket onOpen dan onClose dipanggil apabila sambungan WebSocket diwujudkan dan ditutup masing-masing apabila mesej yang dihantar oleh klien diterima, dan onError dipanggil apabila pengecualian berlaku.

  1. Menggunakan WebSocket dalam halaman ZK

Dalam halaman ZK, kami boleh menggunakan JavaScript untuk mewujudkan sambungan WebSocket, menghantar mesej dan menerima mesej daripada pelayan. Berikut ialah contoh mudah:

<zk>
    <websocket onMessage='zk.log(data);' uri="ws://localhost:8080/your-app-name/websocket"/>
    <textbox id="message" />
    <button label="send" 
        onclick='jq(".z-websocket").each(function(){this.send(jq("#message").val());jq("#message").val("");})' />
</zk>

Dalam kod di atas, kami menggunakan komponen WebSocket untuk mewujudkan sambungan WebSocket Atribut uri menentukan laluan permintaan WebSocket dan acara onMessage digunakan untuk menerima mesej yang dihantar oleh pelayan. Antaranya, zk.log(data) bermaksud mencetak data pada panel log rangka kerja ZK.

4. Ringkasan

Melalui pengenalan artikel ini, kami telah memahami konsep asas teknologi WebSocket dan aplikasinya dalam rangka kerja ZK. WebSocket boleh mencapai komunikasi dupleks penuh dalam aplikasi Web dan mempunyai kelebihan kependaman rendah dan konkurensi tinggi Ia sangat penting untuk aplikasi Web interaktif masa nyata. Menggunakan WebSocket dalam rangka kerja ZK tidak rumit, pembangun hanya perlu mengikuti langkah-langkah tertentu. Saya percaya bahawa melalui kajian artikel ini, semua orang akan mempunyai pemahaman yang lebih mendalam tentang aplikasi teknologi WebSocket dan penggunaan rangka kerja ZK.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan WebSocket dengan rangka kerja ZK?. 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