带有Spring的基本websocket没有STOMP和SockJS

时间:2017-01-13 18:05:02

标签: java spring websocket spring-websocket

我已经实现了以下websocket端点

@MessageMapping("/socket/{myId}/")
@SendTo("/queue/myqueue")
public MyObject getObject(@DestinationVariable String myId) throws Exception {

    return new MyObject("MyId:" + myId);
}

现在我如何从我的一个service.java类向该端点发送消息? 还有前端客户端,一旦service.java类的方法向websocket端点发送一些消息,它将从websocket读取消息。我有点困惑,我怎么能这样做?

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

当使用原始websocket(没有STOMP)时,发送的消息缺少信息以使Spring将其路由到特定的消息处理程序方法(我们没有任何消息传递协议),所以不是注释你的控制器,而是'我必须通过扩展 TextWebSocketHandler 来实现WebSocketHandler public void handleTextMessage(WebSocketSession session,TextMessage message){ }

在此处查看示例spring boot websocket without STOMP and SockJs

答案 1 :(得分:0)

你应该看看SimpMessagingTemplate。 例如,如果要从服务类发送特定用户的消息:

@Autowired
private SimpMessagingTemplate messagingTemplate;

public void sendMessage(User user, String message) {
    Objects.requireNonNull(user);
    Objects.requireNonNull(message);
    messagingTemplate.convertAndSendToUser(user.getUsername(), "/queue/myqueue", message);
}