webstomp-client: соединение обратного вызова не вызывается - PullRequest
0 голосов
/ 23 октября 2018

Я начинаю с веб-сокетов с помощью Springboot.Поэтому для клиентской части я использую библиотеку webstomp-client. .

Для подключения к серверу веб-сокетов библиотека предоставляет метод connect, который также принимает функцию обратного вызова.Проблема, с которой я сталкиваюсь, заключается в том, что функция обратного вызова не вызывается.

После успешного установления соединения мне нужно подписаться на очередь, поэтому вызываемый успешный обратный вызов важен для вызова подписки..

//controller.js
//Main Controller
clentModule.controller('clentController', function($scope) {
    var client;
    $scope.connectAndSubscribe = function()
    {
        var url = "ws://localhost:8080/gs-guide-websocket/websocket";
        client = webstomp.client(url);
        connected = function()
        {
            console.log("connected");
        }

        var headers = {};
        client.connect(headers,function(){
            console.log("successfuly connected");
            var subscription = client.subscribe("/topic/greetings",subscriptionCallback);
        });

        subscriptionCallback = function(data) {
            console.log("subscription data", data);
        }

        //var subscription = client.subscribe("/topic/greetings",subscriptionCallback);
        //console.log(subscription);
    };

    $scope.sendMessage = function()
    {
        $scope.message = {};
        $scope.message.sender = "xyz";
        $scope.message.reciever = "abc";
        var sendObject = JSON.stringify($scope.message);
        client.send("/topic/greetings", {priority: 9}, sendObject);
    };

});

//Webscocketconfig.java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer
{
   @Override
   public void configureMessageBroker( MessageBrokerRegistry config )
   {
      config.enableSimpleBroker( "/topic" );
      config.setApplicationDestinationPrefixes( "/app" );
   }

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