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/