Pencegat WebSocket
Gunakan pencegat WebSocket untuk melakukan prapemprosesan dan pascapemprosesan mesej serta acara sambungan.
Pencegat WebSocket ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.
Selamat Datang ke Pemintas!
Dalam Spring WebSockets, pemintas bertindak seperti penjaga pintu atau pendengar peristiwa yang boleh memerhati dan mengubah suai kitar hayat WebSocket.
Pemintas membolehkan anda melakukan tindakan seperti pencatatan, pengesahan, atau pengubahsuaian data pada titik tertentu semasa sambungan atau pertukaran mesej.
Cangkuk Kitar Hayat
Bayangkan proses WebSocket:
- Jabat Tangan: Permintaan HTTP awal untuk menaik taraf kepada WebSocket.
- Sambungan: Pautan WebSocket diwujudkan.
- Pertukaran Mesej: Data mengalir antara klien dan pelayan.
- Pemutusan Sambungan: Pautan WebSocket ditutup.
Pemintas membolehkan anda "menyambung" pada peringkat-peringkat ini.
Memintas Jabat Tangan
HandshakeInterceptor amat penting untuk langkah pertama: jabat tangan WebSocket.
Ia membolehkan anda:
- Memeriksa permintaan HTTP sebelum sambungan WebSocket diwujudkan.
- Melakukan pemeriksaan pengesahan atau kebenaran.
- Menambahkan atribut pada sesi WebSocket.
Anda boleh menentukan sama ada jabat tangan dibenarkan untuk diteruskan.
Menulis Kod Pemintas Jabat Tangan
Mari kita cipta HandshakeInterceptor ringkas yang mencatat apabila percubaan sambungan bermula dan berakhir. Ini berguna untuk pemantauan atau penyahpepijatan.
Perhatikan kaedah beforeHandshake dan afterHandshake.
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;
import java.util.Map;
public class MyHandshakeInterceptor implements HandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
System.out.println(">>> Handshake starting for: " + request.getURI());
// 'attributes' map can be used to pass data to WebSocket session
return true; // Allow handshake to proceed
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Exception exception) {
System.out.println("<<< Handshake completed for: " + request.getURI());
if (exception != null) {
System.err.println("Handshake failed: " + exception.getMessage());
}
}
}Mengintegrasikan Pemintas Jabat Tangan
Untuk mengaktifkan MyHandshakeInterceptor, kita perlu mendaftarkannya dalam konfigurasi WebSocket aplikasi Spring Boot kita.
Jalankan kod ini dan cuba sambung ke ws://localhost:8080/ws daripada konsol pembangun pelayar (contohnya, new WebSocket('ws://localhost:8080/ws')) untuk melihat catatan tersebut!
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.*;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.socket.server.HandshakeInterceptor;
import java.util.Map;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
// MyHandshakeInterceptor.java (nested for brevity)
class MyHandshakeInterceptor implements HandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest req, ServerHttpResponse res,
org.springframework.web.socket.WebSocketHandler h, Map<String, Object> a) {
System.out.println(">>> Handshake: " + req.getURI());
return true;
}
@Override
public void afterHandshake(ServerHttpRequest req, ServerHttpResponse res,
org.springframework.web.socket.WebSocketHandler h, Exception e) {
System.out.println("<<< Handshake done: " + req.getURI());
}
}
// WebSocketConfig.java (nested for brevity)
@Configuration
@EnableWebSocket
class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry r) {
r.addHandler(new TextWebSocketHandler(), "/ws")
.addInterceptors(new MyHandshakeInterceptor())
.setAllowedOrigins("*");
}
}Memintas Mesej STOMP
Walaupun HandshakeInterceptor mengendalikan sambungan awal, ChannelInterceptor memfokuskan pada mesej STOMP yang mengalir melalui broker mesej Spring.
Pemintas ini beroperasi pada saluran pemesejan, lalu membolehkan anda memeriksa atau mengubah suai mesej sebelum mesej tersebut sampai ke destinasinya atau selepas mesej tersebut dihantar.
Menulis Kod Pemintas Saluran
ChannelInterceptor menyediakan kaedah seperti preSend, postSend, dan afterSendCompletion.
Kaedah preSend biasanya digunakan untuk memeriksa atau mengubah suai mesej sebelum dihantar ke destinasinya (contohnya, topik STOMP atau baris gilir pengguna).
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.ChannelInterceptor;
public class MyChannelInterceptor implements ChannelInterceptor {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
// Log the message or perform security checks
System.out.println("Intercepted STOMP message: " + message.getHeaders());
// You can modify the message here
return message; // Return the message to proceed
}
// Other methods like postSend, afterSendCompletion...
}Mengintegrasikan Pemintas Saluran
Untuk mendaftarkan ChannelInterceptor, anda biasanya menggunakan kelas konfigurasi yang melanjutkan WebSocketMessageBrokerConfigurer.
- Gunakan
clientInboundChannel()untuk memintas mesej yang datang daripada klien. - Gunakan
clientOutboundChannel()untuk memintas mesej yang pergi kepada klien.
Ini membolehkan kawalan terperinci terhadap aliran mesej.
Kes Penggunaan Biasa
Pemintas berguna untuk pelbagai senario:
- Pengesahan dan Kebenaran: Sahkan pengguna sebelum sambungan atau penghantaran mesej.
- Pencatatan: Jejaki peristiwa sambungan dan trafik mesej.
- Pengurusan Sesi: Lampirkan data khusus pengguna pada sesi WebSocket.
- Pengubahsuaian Mesej: Tambahkan pengepala, tapis kandungan, atau ubah bentuk muatan.
- Penghad Kadar: Cegah penyalahgunaan dengan mengehadkan kekerapan mesej.
Pemeriksaan Pengetahuan tentang Pemintas
Anda telah mempelajari dua jenis utama pemintas WebSocket dalam Spring. Mari lihat sama ada anda dapat membezakan kes penggunaan utamanya.
Pemintas: Kawalan WebSocket Anda
Hari ini, anda telah mempelajari Pemintas WebSocket Spring, iaitu alat berkuasa untuk mengawal dan memerhati komunikasi masa nyata anda.
- Pemintas Jabat Tangan: Untuk logik sebelum sambungan.
- Pemintas Saluran: Untuk aliran mesej STOMP.
Pemintas ini penting untuk membina aplikasi WebSocket yang selamat, kukuh dan mudah diperhatikan. Seterusnya, kita akan meneroka penyesuaian penukar mesej!
Pelajari WebSockets dan Sistem Masa Nyata dengan Spring dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Pencegat WebSocket” percuma?
Ya — teks penuh “Pencegat WebSocket” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus WebSockets dan Sistem Masa Nyata dengan Spring, tingkat taraf kepada CoddyKit PRO. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pencegat WebSocket”?
Gunakan pencegat WebSocket untuk melakukan prapemprosesan dan pascapemprosesan mesej serta acara sambungan. Anda berlatih WebSockets dan Sistem Masa Nyata dengan Spring menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan WebSockets dan Sistem Masa Nyata dengan Spring?
Tiada pengalaman terdahulu diperlukan. Pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Pencegat WebSocket” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran WebSockets dan Sistem Masa Nyata dengan Spring ini?
Ya. Setiap pelajaran WebSockets dan Sistem Masa Nyata dengan Spring menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pencegat WebSocket
- Penyesuaian Penukar Mesej
- Pengurusan Sesi Pengguna
- Pemesejan Bersasar kepada Pengguna Tertentu