Javascript 跺脚web套接字回调不';行不通

Javascript 跺脚web套接字回调不';行不通,javascript,html,sockets,websocket,stomp,Javascript,Html,Sockets,Websocket,Stomp,我正在尝试使用STOMP javascript web套接字连接到mqtt brocker。连接已建立。但是我的代码中的回调函数没有被调用? 但是ping消息是发送的 我正在使用url作为主机地址。 这是我的密码 <!DOCTYPE html> <html> <head> <script src="http://cdn.jsdelivr.net/sockjs/0.3.4/sockjs.min.js"></script> &

我正在尝试使用STOMP javascript web套接字连接到mqtt brocker。连接已建立。但是我的代码中的回调函数没有被调用? 但是ping消息是发送的

我正在使用url作为主机地址。 这是我的密码

<!DOCTYPE html>

<html>
<head>


  <script src="http://cdn.jsdelivr.net/sockjs/0.3.4/sockjs.min.js"></script>
  <script src="stomp.js"></script>

  <script>

var ws = new SockJS('http://108.567.234.143:9876/stomp');


var client = Stomp.over(ws);




client.connect('username', 'pw', connect_callback, on_error);


client.heartbeat.outgoing = 20000; // client will send heartbeats every 20000ms
client.heartbeat.incoming = 0;     // client does not want to receive heartbeats
                                   // from the server

var connect_callback = function() {

   alert("Connected to rabbitMQ");
var subscription = client.subscribe("CRICKET", subs_callback);
console.log('subscribe to CRICKET'); 
};

var on_error =  function(error) {
    console.log('error');
};

var    subs_callback = function(message) {
// called when the client receives a STOMP message from the server
if (message.body) {
  alert("got message with body " + message.body)
//console.log('got message with body' + message.body);
} else {
  alert("got empty message");
}
};


console.log('message.body');


</script>


</head>

<body> 


hello world



</body>
</html>  

var ws=new SockJS('http://108.567.234.143:9876/stomp');
var client=Stomp.over(ws);
client.connect('username','pw',connect\u回调,on\u错误);
client.heartbeat.outing=20000;//客户端将每20000ms发送一次心跳
client.heartbeat.incoming=0;//客户端不希望接收心跳
//从服务器
var connect_callback=函数(){
警报(“连接到rabbitMQ”);
var subscription=client.subscribe(“CRICKET”,subs\u回调);
console.log('subscribe to CRICKET');
};
var on_error=函数(错误){
console.log('error');
};
var subs_callback=函数(消息){
//当客户端从服务器收到STOMP消息时调用
if(message.body){
警报(“获取带有正文的消息”+message.body)
//log('get message with body'+message.body);
}否则{
警报(“收到空消息”);
}
};
console.log('message.body');
你好,世界
我不能订阅一个主题。请告诉我怎么了?


谢谢

回调是在使用后定义的

很可能
.connect()
函数正在默默地忽略未定义的函数,因此您没有看到任何错误

定义回调后,将
.connect()
移动到应该可以解决此问题

var ws = new SockJS('http://108.567.234.143:9876/stomp');


var client = Stomp.over(ws);


client.heartbeat.outgoing = 20000; // client will send heartbeats every 20000ms
client.heartbeat.incoming = 0;     // client does not want to receive heartbeats
                                   // from the server

var connect_callback = function() {

   alert("Connected to rabbitMQ");
var subscription = client.subscribe("CRICKET", subs_callback);
console.log('subscribe to CRICKET'); 
};

var on_error =  function(error) {
    console.log('error');
};

var    subs_callback = function(message) {
// called when the client receives a STOMP message from the server
if (message.body) {
  alert("got message with body " + message.body)
//console.log('got message with body' + message.body);
} else {
  alert("got empty message");
}
};


client.connect('username', 'pw', connect_callback, on_error);


console.log('message.body');

有人能找出问题出在哪里吗?可能是因为您在使用回调函数之后定义了它吗?尝试放置
client.connect('username','pw',connect\u回调,on\u错误)函数定义之后非常感谢您。。。它真的很管用……太棒了,我会把它作为一个补充,因为人们可能会发现它很有用。如果将回调函数定义为
function connect\u callback(){…
,而不是
var connect\u callback=function(){…
,那么它将以任何顺序工作。这是由于提升,浏览器将首先加载文件中的所有函数。