我正在尝试使用STOMP与Apache AMQ,因为我希望web套接字会给我一个比典型的org.activemq. AMQ Ajax连接更好的性能。
无论如何,我的activemq配置文件有适当的条目
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
我通过以下方式连接到它:
function amqWebSocketConn() {
var url = "ws://my.ip.address:61614/stomp";
var client = Stomp.client(url);
var connect_callback = function() {
alert('connected to stomp');
client.subscribe("topic://MY.TOPIC",callback);
var callback = function(message) {
if (message.body) {
alert("got message with body " + message.body);
} else { alert("got empty message"); }
};
};
client.connect("", "", connect_callback);
}
当我第一次打开浏览器&导航到http://localhost:8161/admin/connections.jsp
显示如下:
Name Remote Address Active Slow
ID:mymachine-58770-1406129136930-4:9 StompSocket_657224557 true false
之后不久——它将自己移除。我还需要什么东西,比如心跳来保持联系吗?
使用 var amq = org.activemq.Amq;
amq.init({
uri : '/myDomain/amq',
timeout : 50,
clientId : (new Date()).getTime().toString()
});
为TCP AJAX连接保持连接
我遇到过类似的问题,用这个
解决了它client.heartbeat.incoming = 0;
client.heartbeat.outgoing = 0;
您必须在连接之前添加这两行。即使在这之后,我看到5-10分钟后断开连接,如果没有传入的消息。为了解决这个问题,你必须实现连接方法的ondisconnect回调。
client.connect('','',connect_callback,function(frame){
//Connection Lost
console.log(frame);
//Reconnect and subscribe again from here
});