首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CometD 3.1.2客户端是否与2.9.1 CometD服务器兼容?

CometD 3.1.2客户端是否与2.9.1 CometD服务器兼容?
EN

Stack Overflow用户
提问于 2017-08-11 08:46:07
回答 1查看 149关注 0票数 0

我有一个使用CometD 3.1.2并尝试使用CometD 2.9.1连接到服务器的Angular应用程序。

用于连接的代码如下:

代码语言:javascript
复制
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日志包含从服务器接收到的大量重试指示,如下所示:

代码语言:javascript
复制
"New advice"
{
      [functions]: ,
      __proto__: { },
      interval: 2000,
      maxInterval: 0,
      reconnect: "retry",
      timeout: 30000    
}

CometD客户端发出的请求如下:

请求获取/cometd/connect?jsonp=_cometd_jsonp_51&message={"id":"54",“通道”:“/meta/connect”、“connectionType”:“回调轮询”、“clientId”:“5pz4aijzuiawp5nccxdksj”} HTTP/1.1

收到的答复如下

_cometd_jsonp_51({"id":"54",“成功”:真,“建议”:{“间隔”:2000年,“重新连接”:“重试”,“超时”:30000},“通道”:“/meta/连接”})

但是,即使订阅主题在服务器日志中显示为已发送的内容,我也不会收到来自服务器的任何消息。我担心这种无法接收消息的原因是客户端和服务器之间缺乏兼容性。

是否有人试图将CometD 3.1.2客户端连接到2.9.1服务器?CometD有兼容性矩阵吗?CometD文档不包含太多关于客户机和服务器之间兼容性的内容。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-11 10:37:12

上面显示的握手回复显然有一个successful: true字段,所以握手确实成功了。

上面显示的包含reconnect: "retry"的建议是Bayeux协议的一部分,这意味着客户端应该在/meta/connect通道上发出消息,这也表明握手是成功的。

CometD 2.9.x和3.x之间的Bayeux协议没有改变,所以我希望您的配置能够工作(事实上,您上面报告的内容表明握手确实成功)。

但是,我建议将客户端和服务器更新到相同的版本,特别是跨主要版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45630753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档