我有一個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