จะส่งข้อความ websocket จากเซิร์ฟเวอร์ไปยังผู้ใช้เฉพาะได้อย่างไร?
เว็บแอปของฉันมีการตั้งค่าความปลอดภัยแบบสปริงและใช้ websocket ฉันพบปัญหายุ่งยากพยายามส่งข้อความจากเซิร์ฟเวอร์ไปยังผู้ใช้ที่ระบุเท่านั้น
ความเข้าใจของฉันจากการอ่านคู่มือมาจากเซิร์ฟเวอร์ที่เราสามารถทำได้
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
และในฝั่งไคลเอ็นต์:
stompClient.subscribe('/user/reply', handler);
แต่ฉันไม่สามารถเรียกใช้การเรียกกลับการสมัครรับข้อมูลได้ ฉันได้ลองเส้นทางต่างๆมากมาย แต่ไม่มีโชค
ถ้าฉันส่งไปที่/ topic / replyมันใช้งานได้ แต่ผู้ใช้ที่เชื่อมต่ออื่น ๆ ทั้งหมดจะได้รับมันด้วย
เพื่อแสดงปัญหาฉันได้สร้างโปรเจ็กต์เล็ก ๆ นี้บน github: https://github.com/gerrytan/wsproblem
ขั้นตอนในการผลิตซ้ำ:
1) โคลนและสร้างโครงการ (ตรวจสอบให้แน่ใจว่าคุณใช้ jdk 1.7 และ maven 3.1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2) ไปที่http://localhost:8080
เข้าสู่ระบบโดยใช้ bob / test หรือ jim / test
3) คลิก "ขอข้อความเฉพาะผู้ใช้" คาดว่าจะมีข้อความ "hello {username}" ปรากฏถัดจาก "ได้รับข้อความถึงฉันเท่านั้น" สำหรับผู้ใช้รายนี้เท่านั้นตามจริง: ไม่ได้รับอะไร