我有一个Angular应用程序,它使用CometD 3.1.2并尝试使用CometD 2.9.1连接到服务器。CometD 3.1.2客户端是否与2.9.1 CometD服务器兼容?
用于连接的代码是这样的:
let cometInstance = new cometdlib.CometD();
// Configure the CometD object.
cometInstance.configure({
url: 'http://host/cometd',
logLevel: 'debug',
requestHeaders: { ... }
});
// Handshake with the server.
cometInstance.handshake(function(h) {
if (h.successful) {
console.log('Notification handshake done');
cometInstance.subscribe('/topic', function(m) { ... }
} else {
console.log('Notification handshake fail');
}
});
握手成功在第二次尝试与客户端的的cometd日志包含大量从服务器接收到的像下面的重试指示:
"New advice"
{
[functions]: ,
__proto__: { },
interval: 2000,
maxInterval: 0,
reconnect: "retry",
timeout: 30000
}
请求由CometD客户发布如下:
请求GET /com etd/connect?jsonp = _cometd_jsonp_51 & message = [{“id”:“54”,“channel”:“/ meta/connect”,“connectionType”:“callback-polling”,“clientId”:“5pz4aijzuiiawglp5nccxdksj”}] HTTP/1.1
和所接收到的答案是
_cometd_jsonp_51([{ “ID”: “54”, “成功”:真, “建议”:{ “间隔”:2000, “reconnect”:“retry”,“timeout”:30000},“channel”:“/ meta/connect”}])
但是,我没有收到服务器订阅的主题,即使它们在服务器日志中显示为正在发送。我担心接收消息失败是由于客户端和服务器之间缺乏兼容性。
有没有人试图将CometD 3.1.2客户端连接到2.9.1服务器? CometD是否有任何兼容性矩阵? CometD文档不包含太多关于客户端和服务器之间的兼容性。
感谢
你是对的,握手成功了。我纠正了描述。 – mircea
任何想法,为什么我没有从服务器收到任何消息? – mircea
它的工作原理。这是我的服务器上的问题。谢谢你的回答。 – mircea