@Controller public class StompController extends Object
| 构造器和说明 |
|---|
StompController() |
| 限定符和类型 | 方法和说明 |
|---|---|
String |
handleException(Throwable exception)
异常信息推送
broadcast=false 说明:
If the user has more than one session, by default all of the sessions subscribed to the given destination are targeted.
|
void |
message(Principal principal,
io.xiaper.jpa.model.Message message)
一对一聊天
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-handle-annotations
|
void |
message(Principal principal,
String sessionType,
String tid)
protobuf 消息体:
|
void |
message(Principal principal,
String sessionType,
String tid,
io.xiaper.jpa.model.Message message)
会话消息
stomp和mqtt客户端均能够收到消息:
stomp端需要订阅,格式如:/topic/thread.123456 , 注意添加前缀 '/topic/'
stomp服务器发送消息:
String stompDestination = "/topic/"+ messageSessionType + "." + tid;
mqtt端需要订阅,格式如:thread/123456, 注意无前缀 '/topic/' ,同时 '.'
|
String |
speak(String text,
String sessionId)
点对点推送
|
List<io.xiaper.jpa.model.User> |
subscribeThread(Principal principal,
String threadId)
订阅会话id,返回会话中的用户
注意: 不能监听订阅 /topic/
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket-stomp-subscribe-mapping
|
@MessageMapping(value="/message") public void message(Principal principal, io.xiaper.jpa.model.Message message)
principal - principalmessage - msg@MessageMapping(value="/{sessionType}.{tid}")
public void message(Principal principal,
@DestinationVariable(value="sessionType")
String sessionType,
@DestinationVariable(value="tid")
String tid,
io.xiaper.jpa.model.Message message)
principal - principaltid - tidmessage - msg@MessageMapping(value="/protobuf.{sessionType}.{tid}")
public void message(Principal principal,
@DestinationVariable(value="sessionType")
String sessionType,
@DestinationVariable(value="tid")
String tid)
@SubscribeMapping(value="/thread.{threadId}")
public List<io.xiaper.jpa.model.User> subscribeThread(Principal principal,
@DestinationVariable(value="threadId")
String threadId)
principal - principalthreadId - tid@MessageMapping(value="/speak") @SendToUser(value="/personal") public String speak(@Payload String text, @Header(value="simpSessionId") String sessionId) throws Exception
text - textsessionId - sessionIdException@MessageExceptionHandler
@SendToUser(destinations="/queue/errors",
broadcast=false)
public String handleException(Throwable exception)
exception - Copyright © 2019. All rights reserved.