Spring STOMP通过Websocket实现“私人”消息传递

3
我正在开发WebSocket聊天功能。我已经实现了一个简单的版本,可以将每个消息发送给所有人。但是我想要实现私信功能,但不知道如何实现。我尝试了不同的选项,但是无法理解如何使其工作。
以下是我的代码:
WebSocketConfig.java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic/", "/queue/", "/user/");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/gs-guide-websocket").withSockJS();
    }
}

GreetingController.java

@Controller
public class GreetingController {

    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(Message message) throws Exception {
        return new Greeting(message.getFrom_user_id(), message.getMessage(), message.getTo_user_id());

    }
}

我的js函数连接并发送消息:

function connect() {
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
var theUserId = 1;
stompClient.connect({user:theUserId}, function (frame) {
    setConnected(true);
    console.log('Connected: ' + frame);
    //stompClient.subscribe('/topic/greetings', function (greeting) {
    stompClient.subscribe('/topic/greetings', function (greeting) {
        showGreeting(JSON.parse(greeting.body).content);
    });
});
}


function sendName() {
stompClient.send("/app/hello", {}, JSON.stringify(
        {
            'from_user_id': parseInt($("#from_user_id").val()), 
            'message': $("#message").val(),
            'to_user_id': parseInt($("#to_user_id").val())
        }));
}

如何使私信生效?有人能给我解释一下它应该如何工作吗?
谢谢,安德鲁!
1个回答

2

1
谢谢!运行得很好 :) - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接