繁体   English   中英

rabbitmq-stomp-Java客户端发布者,javascript(web)侦听器

[英]rabbitmq-stomp - java client publisher, javascript(web) listener

我试图通过Java客户端简单地发送消息,并使用stomp在服务器端获取消息。 我启用了stomp插件,它确实可以工作,但是似乎没有通信,我在做什么错?....

Java客户端

 public class ServerToStomp {

private static final String EXCHANGE_NAME = "test1";

public static void main(String[] argv) throws Exception {

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.exchangeDeclare(EXCHANGE_NAME, "topic");

    String routingKey = "test1";
    String message = "hello";
    channel.basicPublish(EXCHANGE_NAME, routingKey, null, message.getBytes());
    System.out.println(" [x] Sent '" + routingKey + "':'" + message + "'" + channel.getConnection().getPort());

    connection.close();
}
// ...
}

和the脚客户端:

 <!DOCTYPE html>
<html><head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  <script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>
 <script src="stomp.js"></script>

</head><body lang="en">


<div id="first" class="box">
  <h2>Received</h2>
  <div></div>
  <form><input autocomplete="off" value="Type here..."></input></form>
</div>

<div id="second" class="box">
  <h2>Logs</h2>
  <div></div>
</div>

<script>
    var has_had_focus = false;
    var pipe = function(el_name, send) {
        var div  = $(el_name + ' div');
        var inp  = $(el_name + ' input');
        var form = $(el_name + ' form');

        var print = function(m, p) {
            p = (p === undefined) ? '' : JSON.stringify(p);
            div.append($("<code>").text(m + ' ' + p));
            div.scrollTop(div.scrollTop() + 10000);
        };

        if (send) {
            form.submit(function() {
                send(inp.val());
                inp.val('');
                return false;
            });
        }
        return print;
    };

  // Stomp.js boilerplate
  var ws = new SockJS('http://' + window.location.hostname + ':15674/stomp');
  var client = Stomp.over(ws);

  // SockJS does not support heart-beat: disable heart-beats
  client.heartbeat.outgoing = 0;
  client.heartbeat.incoming = 0;
  client.debug = pipe('#second');

  var print_first = pipe('#first', function(data) {
      client.send('/topic/test1', {"content-type":"text/plain"}, data);
  });
  var on_connect = function(x) {
      id = client.subscribe("/topic/test1", function(d) {
          debugger;
          print_first(d.body);
      });
  };
  var on_error =  function() {
    console.log('error');
  };
  client.connect('guest', 'guest', on_connect, on_error, '/');

  $('#first input').focus(function() {
      if (!has_had_focus) {
          has_had_focus = true;
          $(this).val("");
      }
  });
</script>

更改此:

var on_connect = function(x) {
      id = client.subscribe("/exchange/test1/test1", function(d) {
          debugger;
          print_first(d.body);
      });
  };

我尝试了您的代码,并与此一起正常工作。 希望对您有所帮助

编辑**

您还必须启用Web-stomp插件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM