javascript - javascript 中的 Java CometD Jetty 协议(protocol)等效项

标签 javascript java node.js websocket cometd

    webSocketClient = new WebSocketClient();
    webSocketClient.start();
    wsTransport = new JettyWebSocketTransport(null, null, webSocketClient);
    bayeuxClient = new BayeuxClient(url, wsTransport);
    bayeuxClient.getChannel(someChannel);
    bayeauxClient.handshake(handshakeAuthRequest);

考虑到上面的 Java 代码有效(并且所有内容都已声明),我如何在 Javascript (node.js) 中指定 Jetty ClientTransport wsTransport

我尝试过以下方法:

var connection = new comet.CometD();
connection.configure({
    url: url,
    channel: someChannel
}

connection.handshake(handshakeAuthRequest, function (response) {
    console.log(response);
});

但是我得到了未知的 Bayeaux Transport 失败原因,可能是因为我没有在任何地方指定 Jetty 传输协议(protocol),也找不到如何为 javascript 执行此操作。下面是部分回复。

 {
  id: '1',
  successful: false,
  channel: '/meta/handshake',
  failure: {
    reason: 'Unknown Bayeux Transport',
    exception: undefined,
    httpCode: 400,
    connectionType: 'long-polling',
 ......
 }

最佳答案

如果服务器与 Java 客户端配合使用,那么它也应该与 JavaScript 客户端配合使用。

CometD 有一个浏览器 JavaScript 客户端库,随主要 CometD 项目一起提供,并且还提供 here .

还有 NodeJS-JavaScript 客户端库,它是浏览器 JavaScript 库的一个小型包装器,here ,并将其部署为 NPM 包 here .

错误“Unknown Bayeux Transport”通常是由于服务器不支持 WebSocket,或者配置不正确,因此如果对您来说更容易的话,请先确保它与 Java 客户端兼容,然后再使用NodeJS 客户端。

关于javascript - javascript 中的 Java CometD Jetty 协议(protocol)等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079891/

相关文章:

node.js - 环回异步/等待 UnhandledPromiseRejectionWarning 问题

javascript - 在 Backbone.js 应用程序中使用 lodash 而不是下划线

javascript - 如何使用 Javascript + CSS 拆分图像?

java - 错误 :Could not initialize class com. android.sdklib.repositoryv2.AndroidSdkHandler

javascript - MaxListenersExceededWarning : Possible EventEmitter memory leak detected. 添加了 11 个消息监听器。使用 emitter.setMaxListeners() 增加限制

node.js - 无法访问中间件内 app.use() 的 req.params

javascript - 解决 selenium2 打印弹出窗口

javascript - 如何在 Backbone.js 中编写可重用的模型和 View

java - 使用Java将HDFS文件拆分为多个本地文件

java - 如何使用UTF-8编码打开java程序生成的zip文件