Melaksanakan Pemberitahuan Pengguna
Bina sistem pemberitahuan yang kukuh untuk menyampaikan makluman dan kemas kini segera kepada pengguna dalam masa nyata.
Melaksanakan Pemberitahuan Pengguna ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 3 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.
Apakah Pemberitahuan Pengguna?
Pemberitahuan pengguna penting untuk aplikasi moden. Pemberitahuan ini memastikan pengguna mendapat maklumat tentang peristiwa, kemas kini atau mesej penting dalam masa nyata.
Fikirkan amaran media sosial, pemberitahuan e-mel baharu atau jemputan permainan. Semua ini meningkatkan penglibatan dan memastikan pengguna tidak terlepas maklumat penting.
Sistem Pemberitahuan Teras
Sistem pemberitahuan masa nyata yang kukuh biasanya melibatkan beberapa komponen utama:
- Perkhidmatan Bahagian Belakang: Untuk menjana dan menghantar pemberitahuan.
- Broker Mesej: Untuk menghalakan pemberitahuan dengan cekap kepada pengguna yang betul.
- Logik Sisi Klien: Untuk menerima, memaparkan dan mengurus pemberitahuan.
Kami akan menumpukan pada aspek masa nyata dalam aplikasi menggunakan Spring WebSockets dan STOMP.
Membina Model Pemberitahuan
Pertama sekali, kita memerlukan struktur data untuk pemberitahuan kita. Model ini mentakrifkan maklumat yang dibawa oleh setiap pemberitahuan.
Medan utama biasanya termasuk:
id: Pengecam unik.recipientId: Penerima pemberitahuan.senderId: Penghantar pemberitahuan (pilihan).message: Kandungan sebenar.type: Kategori (contohnya, "message", "alert", "friend_request").timestamp: Masa pemberitahuan dicipta.isRead: Sama ada pengguna telah melihatnya? (true/false)
Penciptaan Pemberitahuan Sisi Pelayan
Di pelayan, peristiwa (seperti mesej baharu atau tindakan pengguna) mencetuskan penciptaan objek Notification. Objek ini kemudiannya diproses dan dihantar.
Berikut ialah kelas Java ringkas yang mewakili model pemberitahuan kita:
public class Notification {
private String id;
private String recipientId;
private String senderId;
private String message;
private String type;
private long timestamp;
private boolean isRead;
// Constructor
public Notification(String recipientId, String senderId, String message, String type) {
this.id = java.util.UUID.randomUUID().toString();
this.recipientId = recipientId;
this.senderId = senderId;
this.message = message;
this.type = type;
this.timestamp = System.currentTimeMillis();
this.isRead = false;
}
// Getters (and setters if needed)
public String getId() { return id; }
public String getRecipientId() { return recipientId; }
public String getSenderId() { return senderId; }
public String getMessage() { return message; }
public String getType() { return type; }
public long getTimestamp() { return timestamp; }
public boolean isRead() { return isRead; }
public void setRead(boolean read) { isRead = read; }
@Override
public String toString() {
return "Notification [recipient=" + recipientId + ", msg='" + message + "']";
}
}Menghalakan Pemberitahuan Pengguna
Untuk menghantar pemberitahuan kepada pengguna tertentu, kami memanfaatkan destinasi pengguna STOMP. Templat pemesejan Spring memudahkan proses ini.
Destinasi biasanya kelihatan seperti /user/{userId}/queue/notifications. Apabila pelayan menghantar mesej kepada destinasi ini, Spring secara automatik menghalakannya kepada sesi WebSocket yang dikaitkan dengan userId tersebut.
Ini memastikan hanya penerima yang dimaksudkan menerima pemberitahuan tersebut.
Menolak Pemberitahuan (Konsep Pelayan)
Di pelayan, apabila suatu peristiwa mencetuskan pemberitahuan, perkhidmatan bahagian belakang akan mencipta objek Notification. Kemudian, dengan menggunakan SimpMessagingTemplate Spring, perkhidmatan itu menghantar pemberitahuan ini ke baris gilir STOMP peribadi penerima.
Kaedah convertAndSendToUser amat penting di sini kerana kaedah ini memetakan ID pengguna kepada sesi WebSocket aktif mereka.
Walaupun SimpMessagingTemplate memerlukan konteks Spring, kami boleh menerangkan objek pemberitahuan dan penghantaran secara konseptual:
public class Notification {
private String recipientId;
private String message;
private long timestamp;
public Notification(String recipientId, String message) {
this.recipientId = recipientId;
this.message = message;
this.timestamp = System.currentTimeMillis();
}
public String getRecipientId() { return recipientId; }
public String getMessage() { return message; }
public long getTimestamp() { return timestamp; }
@Override
public String toString() {
return "Notification [to=" + recipientId + ", msg='" + message + "']";
}
public static void main(String[] args) {
// This simulates creating and conceptually sending a notification
String userId = "user123";
String notificationMessage = "You have a new message!";
Notification newNotification = new Notification(userId, notificationMessage);
System.out.println("Created notification: " + newNotification);
System.out.println("Spring's SimpMessagingTemplate would then send this to /user/" + userId + "/queue/notifications");
System.out.println("Client-side would receive this via their WebSocket subscription.");
}
}Klien Mendengar Kemas Kini
Di sisi klien, contohnya pelayar web, pengguna perlu melanggan baris gilir pemberitahuan peribadi mereka. Langkah ini dilakukan melalui sambungan WebSocket selepas pengesahan.
Destinasi langganan akan sepadan dengan corak penghantaran di sisi pelayan: /user/queue/notifications.
Sebarang mesej yang dihantar oleh pelayan ke destinasi ini untuk pengguna yang telah disahkan akan diterima oleh klien.
Langganan di Sisi Klien (JS)
Berikut ialah coretan JavaScript asas yang menggunakan pustaka klien STOMP seperti stomp.js atau @stomp/stompjs untuk menyambung dan melanggan.
// Assume 'stompClient' is already connected to WebSocket
// and authenticated.
// Function to handle incoming notifications
function onNotificationReceived(notification) {
console.log("Received notification:", notification.body);
// Parse JSON body, e.g., JSON.parse(notification.body)
// Then update UI to display the notification
displayNotification(JSON.parse(notification.body));
}
// Function to display notification in UI
function displayNotification(notifObj) {
const notifArea = document.getElementById("notificationArea");
const newNotif = document.createElement("div");
newNotif.innerHTML = `<b>${notifObj.message}</b>
<small>(${new Date(notifObj.timestamp).toLocaleTimeString()})</small>`;
notifArea.prepend(newNotif);
}
// Subscribe to the user's private notification queue
stompClient.subscribe('/user/queue/notifications', onNotificationReceived);
console.log("Subscribed to /user/queue/notifications");
// In a real app, you'd have a 'connect' function first.
// Example: stompClient.connect({}, frame => { ... subscribe here ... });Menandakan Pemberitahuan sebagai Dibaca
Selepas pengguna melihat pemberitahuan, amalan yang baik ialah menandakannya sebagai telah dibaca. Biasanya, tindakan ini melibatkan interaksi berasingan dan bukan dilakukan secara langsung melalui WebSockets untuk kemas kini itu sendiri.
Klien boleh menghantar panggilan API REST ringkas, contohnya permintaan PUT atau POST, kepada bahagian belakang untuk menunjukkan pemberitahuan yang patut ditandakan sebagai telah dibaca.
Bahagian belakang kemudiannya mengemas kini status isRead pemberitahuan dalam pangkalan data.
Pemeriksaan Penghantaran Pemberitahuan
Anda telah membina sistem untuk menghantar pemberitahuan masa nyata kepada pengguna tertentu. Bagaimanakah pelayan memastikan pemberitahuan sampai hanya kepada penerima yang dimaksudkan?
Imbas Kembali: Membina Penghantar Pemberitahuan
Dalam pelajaran ini, kita meneroka cara melaksanakan sistem pemberitahuan pengguna masa nyata.
- Kita mereka bentuk model
Notification. - Kita mempelajari cara menggunakan
SimpMessagingTemplateSpring bersamaconvertAndSendToUseruntuk penghantaran bersasar. - Kita memahami cara klien melanggan baris gilir peribadi mereka (
/user/queue/notifications). - Kita membincangkan cara menandakan pemberitahuan sebagai telah dibaca melalui API REST.
Prinsip ini membolehkan anda membina aplikasi yang menarik dan interaktif, serta memastikan pengguna menerima maklumat dengan segera!
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 “Melaksanakan Pemberitahuan Pengguna” percuma?
Ya — teks penuh “Melaksanakan Pemberitahuan Pengguna” 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 “Melaksanakan Pemberitahuan Pengguna”?
Bina sistem pemberitahuan yang kukuh untuk menyampaikan makluman dan kemas kini segera kepada pengguna dalam masa nyata. 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 3 daripada 4.
Berapa lamakah pelajaran “Melaksanakan Pemberitahuan Pengguna” 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
- Acara Dihantar Pelayan (SSE) berbanding WebSockets
- Seni Bina Tolakan Data Masa Nyata
- Melaksanakan Pemberitahuan Pengguna
- Menjejaki Kehadiran dan Status Dalam Talian