Проблема с пружинным гнездом и гнездом JS - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь создать приватный чат, используя Spring Socket и Socket JS.

Я чувствую, что достиг последнего шага, но не могу получить сообщение в конце.

Я следовал учебному пособию, чтобы приспособиться к своему конкретному c случаю. Мне интересно, если я забыл какой-либо шаг или что-то.

Вот основная часть кода:

JAVA

1.Конфигурация класса

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    private static final Logger logger = Logger.getLogger("WebSocketConfig");

    @Override
    public void configureMessageBroker(final MessageBrokerRegistry config) {
        config.enableSimpleBroker("/secured/user/queue/specific-user");
        config.setUserDestinationPrefix( "/secured/user");
    }

    @Override
    public void registerStompEndpoints(final StompEndpointRegistry registry) {
        registry.addEndpoint("/secured/room").withSockJS();
    }

}

2 .Контроллер класса

@Controller
public class ChatController {

    @Autowired
    SimpMessagingTemplate simpMessagingTemplate;

    private static final Logger logger = Logger.getLogger("ChatController");

    @MessageMapping("/secured/room")
    public void sendSpecific(@Payload Message message, Principal user, @Header("simpSessionId") String sessionId) throws Exception {
        final String time = new SimpleDateFormat("HH:mm").format(new Date());
        OutputMessage out = new OutputMessage(message.getFrom(), message.getText(), time);
        simpMessagingTemplate.convertAndSendToUser("benoit", "/secured/user/queue/specific-user", out);
    }

}

JavaScript

var stompClient = null;
            var sessionId = "";

            function setConnected(connected) {
                document.getElementById('connect').disabled = connected;
                document.getElementById('disconnect').disabled = !connected;
                document.getElementById('conversationDiv').style.visibility = connected ? 'visible' : 'hidden';
                document.getElementById('response').innerHTML = '';
            }

            function connect() {
                var socket = new SockJS('/secured/room'); 
                stompClient = Stomp.over(socket);
                stompClient.connect({
                    name:"benoit"
                }, function (frame) {
                    var url = stompClient.ws._transport.url;
                    console.log(url);
                    url = url.replace(
                      "ws://localhost:8080/secured/room/",  "");
                    url = url.replace("/websocket", "");
                    url = url.replace(/^[0-9]+\//, "");
                    console.log("Your current session is: " + url);
                    sessionId = url;
                    setConnected(true);
                    console.log(stompClient);
                    stompClient.subscribe('/secured/user/queue/specific-user'
                              + '-user' + sessionId, function (msgOut) {
                                  var response = document.getElementById('response');
                                  var p = document.createElement('p');
                                  p.style.wordWrap = 'break-word';
                                  p.appendChild(document.createTextNode(messageOutput.from + ": " + messageOutput.text + " (" + messageOutput.time + ")"));
                                  response.appendChild(p);
                    });
                });
            }


            function disconnect() {
                if(stompClient != null) {
                    stompClient.disconnect();
                }

                setConnected(false);
                console.log("Disconnected");
            }

            function sendMessage() {

                var from = document.getElementById('from').value;
                var text = document.getElementById('text').value;
                console.log(stompClient);

                var msg = {
                  'from': (from === undefined || from === null ) ? to : from,
                  'to': "benoit",
                  'text': text
                };

                console.log(JSON.stringify(msg));
                stompClient.send('/secured/room', {}, JSON.stringify(msg));
            }

Вот страница html с журналом:

Скриншот журнала

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...