Я начинаю с веб-сокетов с помощью 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();
}
}