Pengurusan Kitar Hayat Sambungan
Urus kitar hayat sambungan WebSocket, termasuk pembukaan, penutupan dan pemutusan sambungan yang tidak dijangka.
Pengurusan Kitar Hayat Sambungan ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 2 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.
Kitar Hayat Sambungan WebSocket
Setiap sambungan WebSocket melalui kitar hayat: sambungan dibuka, kekal aktif untuk pemesejan, kemudian akhirnya ditutup. Pengurusan peringkat ini amat penting untuk membina aplikasi masa nyata yang kukuh.
Pengurusan kitar hayat yang betul membantu memastikan sumber digunakan dengan cekap dan aplikasi anda bertindak balas dengan baik terhadap pelbagai acara sambungan.
Jabat Tangan Awal
Sebelum sambungan WebSocket diwujudkan, jabat tangan HTTP awal berlaku. Klien menghantar permintaan HTTP dengan pengepala Upgrade untuk meminta pertukaran protokol.
Jika pelayan bersetuju, pelayan membalas dengan status 101 Switching Protocols, lalu sambungan beralih daripada HTTP kepada WebSocket.
Sambungan pada Bahagian Klien
Pada bahagian klien, biasanya dalam pelayar web, anda memulakan sambungan WebSocket menggunakan JavaScript. Pembina WebSocket mencipta sambungan baharu ke URL yang ditentukan.
Contoh ini menunjukkan cara menyambung dan mencatat mesej apabila sambungan dibuka atau mengalami ralat.
const socket = new WebSocket("ws://localhost:8080/lifecycle");
socket.onopen = () => {
console.log("WebSocket Connected!");
};
socket.onerror = (error) => {
console.error("WebSocket Error:", error);
};Bahagian Pelayan: Mengendalikan Sambungan Baharu
Dalam Spring, anda boleh menggunakan anotasi @OnOpen untuk mentakrifkan kaedah yang dilaksanakan apabila sambungan WebSocket baharu diwujudkan. Inilah titik masuk anda untuk mengendalikan klien baharu.
Objek Session menyediakan butiran tentang sambungan klien.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@SpringBootApplication
public class WebSocketLifecycleApp {
public static void main(String[] args) {
SpringApplication.run(WebSocketLifecycleApp.class, args);
}
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
@ServerEndpoint("/lifecycle")
@Component
class LifecycleHandler {
@OnOpen
public void onOpen(Session session) {
System.out.println("Client connected: " + session.getId());
}
}Menutup Sambungan dengan Baik
Sambungan boleh ditutup dengan sengaja oleh klien atau pelayan. Tindakan ini dipanggil penutupan 'terkawal'. Penutupan sambungan dengan betul penting untuk membebaskan sumber pelayan dan memaklumkan klien.
Mesej penutupan biasanya mengandungi kod status dan sebab penutupan, supaya kedua-dua pihak memahami sebab sambungan ditamatkan.
Pemutusan Sambungan pada Klien
Klien boleh menutup sambungan WebSocket menggunakan kaedah close(). Anda boleh memberikan kod status dan mesej sebab secara pilihan.
Pendengar acara onclose dicetuskan apabila sambungan ditutup, membolehkan anda melakukan pembersihan atau mengemas kini antara muka pengguna.
socket.onclose = (event) => {
if (event.wasClean) {
console.log(`Closed cleanly, code=${event.code}, reason=${event.reason}`);
} else {
console.log('Connection died unexpectedly');
}
};
// To close the connection explicitly:
socket.close(1000, "Client leaving");Bahagian Pelayan: Mengendalikan Pemutusan Sambungan
Anotasi @OnClose dalam Spring membolehkan anda mentakrifkan kaedah yang dilaksanakan apabila sambungan WebSocket ditutup. Di sinilah anda boleh membersihkan sumber yang berkaitan dengan sesi tersebut.
Parameter CloseReason memberikan butiran tentang sebab sambungan ditamatkan.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import javax.websocket.OnOpen;
import javax.websocket.OnClose;
import javax.websocket.Session;
import javax.websocket.CloseReason;
import javax.websocket.server.ServerEndpoint;
@SpringBootApplication
public class WebSocketLifecycleApp {
public static void main(String[] args) {
SpringApplication.run(WebSocketLifecycleApp.class, args);
}
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
@ServerEndpoint("/lifecycle")
@Component
class LifecycleHandler {
@OnOpen
public void onOpen(Session session) {
System.out.println("Client connected: " + session.getId());
}
@OnClose
public void onClose(Session session, CloseReason reason) {
System.out.println("Client disconnected: " + session.getId() + " - Reason: " + reason.getReasonPhrase());
}
}Mengendalikan Pemutusan Sambungan dan Ralat Tidak Dijangka
Kadang-kadang sambungan tidak ditutup dengan baik. Masalah rangkaian, aplikasi klien terhenti atau ralat pelayan boleh menyebabkan pemutusan sambungan secara mendadak. Ini ialah penutupan 'tidak terkawal'.
Anda perlu mempunyai mekanisme untuk mengesan dan bertindak balas terhadap kejadian yang tidak dijangka ini bagi mengekalkan kestabilan aplikasi dan pengalaman pengguna.
Bahagian Pelayan: Pengendalian Ralat
Anotasi @OnError mengendalikan pengecualian yang berlaku semasa sesi WebSocket. Pengecualian ini mungkin berpunca daripada masalah seperti ralat pemprosesan mesej atau masalah rangkaian asas.
Pelaksanaan pengendali @OnError memastikan pelayan anda boleh mencatatkan ralat dan, jika perlu, menutup sesi yang terjejas dengan baik bagi mengelakkan kebocoran sumber.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import javax.websocket.OnOpen;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.Session;
import javax.websocket.CloseReason;
import javax.websocket.server.ServerEndpoint;
@SpringBootApplication
public class WebSocketLifecycleApp {
public static void main(String[] args) {
SpringApplication.run(WebSocketLifecycleApp.class, args);
}
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
@ServerEndpoint("/lifecycle")
@Component
class LifecycleHandler {
@OnOpen
public void onOpen(Session session) {
System.out.println("Client connected: " + session.getId());
}
@OnClose
public void onClose(Session session, CloseReason reason) {
System.out.println("Client disconnected: " + session.getId() + " - Reason: " + reason.getReasonPhrase());
}
@OnError
public void onError(Session session, Throwable throwable) {
System.err.println("Error on session " + session.getId() + ": " + throwable.getMessage());
}
}Mengesan Keaktifan dengan Denyutan Jantung
Apabila sambungan terputus secara tidak dijangka (contohnya, kabel rangkaian tercabut), kedua-dua pihak mungkin tidak menyedarinya dengan serta-merta. Mekanisme denyutan jantung, yang biasanya menggunakan bingkai ping/pong WebSocket, membantu mengesan pihak yang tidak memberikan respons.
Dengan menghantar ping secara berkala dan menjangkakan pong, anda boleh menentukan sama ada sambungan masih aktif dan menutupnya jika tiada respons diterima.
Semakan Pengurusan Kitar Hayat
Pengurusan pelbagai peringkat sambungan WebSocket ialah kunci untuk membina aplikasi masa nyata yang boleh dipercayai. Mari uji pemahaman anda tentang anotasi kitar hayat Spring.
Ulang Kaji: Pengurusan Sambungan
Dalam pelajaran ini, anda telah mempelajari aspek penting pengurusan kitar hayat sambungan WebSocket. Kita membincangkan:
- Jabat tangan HTTP awal.
- Cara klien dan pelayan membuka sambungan (
@OnOpen). - Pemutusan sambungan klien dan pelayan secara terkawal (
@OnClose). - Pengendalian ralat yang tidak dijangka semasa sesi (
@OnError). - Peranan denyutan jantung dalam mengesan sambungan yang tidak memberikan respons.
Penguasaan konsep ini merupakan asas penting untuk membangunkan aplikasi masa nyata yang kukuh dan berdaya tahan dengan WebSocket dan Spring.
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 “Pengurusan Kitar Hayat Sambungan” percuma?
Ya — teks penuh “Pengurusan Kitar Hayat Sambungan” 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 “Pengurusan Kitar Hayat Sambungan”?
Urus kitar hayat sambungan WebSocket, termasuk pembukaan, penutupan dan pemutusan sambungan yang tidak dijangka. 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 2 daripada 4.
Berapa lamakah pelajaran “Pengurusan Kitar Hayat Sambungan” 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
- Mengendalikan Ralat WebSocket dengan Baik
- Pengurusan Kitar Hayat Sambungan
- Percubaan Semula dan Mekanisme Sandaran
- Denyutan Jantung dan Kekal Hidup Ping/Pong