Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stomp java客户端_Java_Spring_Stomp - Fatal编程技术网

Stomp java客户端

Stomp java客户端,java,spring,stomp,Java,Spring,Stomp,如果使用STOMP客户端进行服务器端编码时出现任何错误,我想向客户端发送警报。我在谷歌上搜索过,没有找到任何例子,但我找到了 我已经在controller中编写了以下代码 WebSocketClient transport = new StandardWebSocketClient(); WebSocketStompClient stompClient = new WebSocketStompClient(transport); stompClient.setMessageConverter(n

如果使用STOMP客户端进行服务器端编码时出现任何错误,我想向客户端发送警报。我在谷歌上搜索过,没有找到任何例子,但我找到了

我已经在controller中编写了以下代码

WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
stompClient.setMessageConverter(new StringMessageConverter());
String url = "ws://localhost:8080/SpringMVCStompClient/alert";
StompSessionHandler handler = new MySessionHandler();
stompClient.connect(url, handler);
MyHandler代码是:

public class MySessionHandler extends StompSessionHandlerAdapter {
    @Override
    public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
        Alert alert= new Alert();
        alert.setName("Server");
        alert.setMessage("Message from server");
        session.send("/topic/alert", alert);
    }
}
当我试图执行时,这个执行不会进入MyHandler类。这样做对吗
帮助我如何向客户发送警报

Websocket XML配置

<websocket:message-broker application-destination-prefix="/app">
        <websocket:stomp-endpoint path="/alert">
            <websocket:sockjs/>
        </websocket:stomp-endpoint>
        <websocket:simple-broker prefix="/topic"/>
    </websocket:message-broker>
客户端js代码服务

(function(angular, SockJS, Stomp) {
  angular.module("alertApp.services").service("AlertService", function($q, $timeout) {

    var service = {}, listener = $q.defer(), socket = {
      client: null,
      stomp: null
    };

    service.SOCKET_URL = "/SpringMVCStompClient/alert";
    service.ALERT_TOPIC = "/topic/alert";
    service.ALERT_BROKER = "/app/alert";

    service.receive = function() {
      return listener.promise;
    };

    service.send = function(alert) {
      socket.stomp.send(service.ALERT_BROKER, { priority: 9}, JSON.stringify({
        message: alert.message,
        name: alert.name
      }));
    };

    service.disconnect = function() {
        socket.stomp.disconnect();
    };

    var startListener = function() {
      socket.stomp.subscribe(service.ALERT_TOPIC, function(data) {
          listener.notify(JSON.parse(data.body));
      });
    };

    service.initialize = function() {
      socket.client = new SockJS(service.SOCKET_URL);
      socket.stomp = Stomp.over(socket.client);
      socket.stomp.connect({}, startListener);
    };

    return service;
  });
})(angular, SockJS, Stomp);

为什么不简单地使用SimpMessageTemplate呢?我已经尝试过SimpleMessageTemplate,它遵循本文档。我没有从服务器收到任何警报。你能用配置和客户端代码更新你的问题吗?我已经按照本教程创建了聊天应用程序。现在,我正在尝试将该聊天应用程序转换为生成提醒,而不是聊天消息。感谢@Sergi SimpleMessageTemplate为我工作。使用SimpleMessageTemplate和STOMP java客户端向客户端发送消息有什么区别?
(function(angular, SockJS, Stomp) {
  angular.module("alertApp.services").service("AlertService", function($q, $timeout) {

    var service = {}, listener = $q.defer(), socket = {
      client: null,
      stomp: null
    };

    service.SOCKET_URL = "/SpringMVCStompClient/alert";
    service.ALERT_TOPIC = "/topic/alert";
    service.ALERT_BROKER = "/app/alert";

    service.receive = function() {
      return listener.promise;
    };

    service.send = function(alert) {
      socket.stomp.send(service.ALERT_BROKER, { priority: 9}, JSON.stringify({
        message: alert.message,
        name: alert.name
      }));
    };

    service.disconnect = function() {
        socket.stomp.disconnect();
    };

    var startListener = function() {
      socket.stomp.subscribe(service.ALERT_TOPIC, function(data) {
          listener.notify(JSON.parse(data.body));
      });
    };

    service.initialize = function() {
      socket.client = new SockJS(service.SOCKET_URL);
      socket.stomp = Stomp.over(socket.client);
      socket.stomp.connect({}, startListener);
    };

    return service;
  });
})(angular, SockJS, Stomp);