Avatar
0
Hihi Teacher
Hihi Teacher
Group Chat và Private Chat trong Stomp Spring Websocket

Xin chào mọi người ,em có một vấn đề muốn hỏi là:

Em đang tìm hiểu về cách subscribe các topic của Spring Weboscket (STOMP) làm sao cho client JS có thể vừa nhận được tin nhắn private(1-1) và tin nhắn nhóm (1-N).Bình thường khi chỉ làm tin nhắn private (1-1) thì em subscribe topic nối thêm userid (như hình dưới ),nhưng lần này em có tích hợp tạo nhóm và nhắn tin theo nhóm nữa nên em không biết subscribe  như thế nào thì ổn nhất.Mong mọi người cho em ý kiến ạ.Em cám ơn !

  • Answer
spring
Remain: 5
1 Answer
Avatar
monkey Teacher
monkey Teacher
Thường sẽ không làm như em đang làm, em phải tổ chức thành các channel rồi cho user subscribe các các channel này:

Ví dụ:

  • channel 1: userA, userB
  • channel 2: usera, userB, userC

Em cần lựa chọn 1 thiết kế tốt trước khi code nhé, em có thể tham khảo bài này nhé: https://tvd12.com/freechat-design-database/

  • 0
  • Reply
Em cũng có nghĩ đến cách tổ chức giống như anh nói ạ.Nhưng về cách này em không hiểu làm thế nào có thể subcribe tất cả các channel 1 lúc được.Em có ý như này nhưng theo em nó không ổn lắm đó là Mỗi khi connect ws xong thì dùng vòng lặp foreach để để subscribe tất cả các channel của user đó (lấy channelid từ API).  –  Hihi 1630887925000
Ừ, như vậy cũng hợp lý em ạ, gọi subscribe trên cùng 1 socket connection ko vấn đề gì em ạ  –  monkey 1630889048000
Cách này em nghĩ là sử dụng được nhưng với 1 ứng dụng có nhiều user mà mỗi user có nhiều cuộc trò chuyện (gồm cả private và group chat) nên việc chạy vòng lặp foreach mỗi khi connect có ảnh hưởng đến hiệu năng không ạ?

Ví dụ: 1 user có 2000 cuộc trò chuyện thì có nghĩa là khi vào trang chat 2000 lệnh subcribe gửi đến server.Em chưa có kinh nghiệm làm với nhiều người dùng nên còn ko rõ vấn đến này ạ.

 –  Hihi 1630891648000