Hỏi về chat bằng WebSocket trong Spring

E chào mọi người. e đang build cái chat dùng WebSocket.
yêu cầu gấp quá nên e chưa kịp tìm hiểu nhiều.
cho e hỏi là làm sao lấy đc danh sách user đang trong nhóm chat và hiển thị tên user ra.

(mỗi lần e F5 lại là mất hết chat, nhưng những user khác vẫn trong đó vì e ko out)

Mong mn giúp e sớm. E cám ơn ạ.

về websocket và cách quản lý theo mình mình sẽ làm như sau:

  1. mình tạo ra 1 bean là concurrent hashmap để lưu session với session model.
  2. mỗi khi có kết nối spring sẽ auto nhảy vào hàm after esti connection bạn sẽ lưu vào map session còn khi nào nhảy vào hàn close connection b sẽ remove sesion.
  3. mõi khi có request yêu cầu get thông tin group chat mình sẽ autowired lại session cache sau đó reply cho client như vậy có thể get đc session info.

—> về việc chi tiết hơn mình nghĩ rất khó mô tả nhưng b đã làm đc đến bc tạo ra đc session r thì chỉ cần quản lý session nữa là ok. hy vọng hữu ích cho b

Websocket là protocol, nó không liên quan tới task mà bạn cần làm.

Thông thường realtime application sử dụng pub/sub pattern, việc lấy danh sách trong nhóm chat có thể thực hiện bằng cách lấy toàn bộ subscribers từ 1 channel (group) đó ra.

cho e hỏi làm sao lấy đc all subcriber ra = js ạ? e thấy code chủ yếu dùng JS

e muốn lấy ra luôn bằng JS ấy ạ. e thấy connect vs disconect chủ yếu dùng JS. kiểu real time ấy ạ. có ng# kết nối thì auto hiện thêm người đó ở bên danh sách đang chat ấy ạ ?

Không có ai rảnh ngồi code hết giúp bạn đâu.

Bạn có thể Google keyworkd: pub/sub javascript library

1 trong số đó là: https://github.com/mroderick/PubSubJS

Design hệ thống thì có thể như sau:

  1. người dùng subscribe tới 1 specific channel, channel đó có thể đại diện cho group chat). Việc subscribe có thể thực hiện qua ajax request (tìm hiểu về websocket protocol, HTTP Upgrade header)
  2. khi đã subscribe thành công, nghĩa là bạn đã có bi-directional connection, nghĩa là bạn có thể nhận, gửi thông qua websocket protocol. lúc đó việc nhận thông tin người online, danh sách người trong group chỉ là chuyện về API.

PS: websocket là tương lai, nhưng hiện tại web polling vẫn còn đang được rất nhiều bên (giants) sử dụng.

e ko nhờ mn code hộ e. e chỉ đang nhờ mn hướng dẫn giúp e thôi a. vì e thấy code demo websocket e down về chủ yếu là JS nên e hỏi vậy

e cám ơn a. để e tìm hiểu như a chỉ ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?