Làm cách nào để gửi tin nhắn websocket từ máy chủ đến người dùng cụ thể?
Ứng dụng web của tôi có thiết lập bảo mật mùa xuân và sử dụng websocket. Tôi đang gặp phải sự cố khó khăn khi chỉ gửi tin nhắn từ máy chủ tới người dùng cụ thể .
Sự hiểu biết của tôi từ việc đọc sách hướng dẫn là từ máy chủ, chúng tôi có thể làm
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
Và về phía khách hàng:
stompClient.subscribe('/user/reply', handler);
Nhưng tôi không bao giờ có thể gọi lại đăng ký. Tôi đã thử nhiều con đường khác nhau nhưng không may mắn.
Nếu tôi gửi nó tới / topic / reply thì nó vẫn hoạt động nhưng tất cả những người dùng được kết nối khác cũng sẽ nhận được nó.
Để minh họa vấn đề, tôi đã tạo dự án nhỏ này trên github: https://github.com/gerrytan/wsproblem
Các bước tái tạo:
1) Sao chép và xây dựng dự án (đảm bảo bạn đang sử dụng jdk 1.7 và maven 3.1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) Điều hướng đến http://localhost:8080
, đăng nhập bằng bob / test hoặc jim / test
3) Nhấp vào "Yêu cầu tin nhắn cụ thể của người dùng". Dự kiến: một thông báo "xin chào {tên người dùng}" được hiển thị bên cạnh "Chỉ nhận được tin nhắn cho tôi" chỉ dành cho người dùng này, Thực tế: không nhận được gì