javascript - JanusGraph 0.4.0 通过 WebSocket 连接时抛出错误
问题描述
我有一个通过 websocket 连接到 Janusgraph 的 React 应用程序。这在 JanusGraph 0.3.1 版本中运行良好。我安装了 0.4.0 版,它适用于 gremlin 控制台,但是当尝试使用以下简化的示例 websocket 调用从 javascript websocket 连接时:
const WebSocketAsPromised = require('websocket-as-promised');
getGraphNames = () => {
let gremlin_query = 'ConfiguredGraphFactory.getGraphNames();';
this.run_websocket_request(gremlin_query)
.then(response => {
if (response) {
console.log('GetGraphIds: ', response);
}
});
}
run_websocket_request(gremlin_query, reqid = null, close = false) {
return new Promise((resolve, reject) => {
var wsstring = 'ws://localhost:8182/gremlin';
const wsp = new WebSocketAsPromised(wsstring, {
packMessage: data => JSON.stringify(data),
unpackMessage: message => JSON.parse(message)
});
wsp.onMessage.addListener(message => {
var response = JSON.parse(message);
//console.log('run_websocket_request: ', response.result.data);
if (!reqid) {
wsp.close();
return resolve(response.result.data);
} else {
if (close) {
wsp.close();
}
return resolve(response.result.data);
}
});
wsp.onClose.addListener(event => console.log('Connections closed: ', event.reason));
wsp.open()
.then(() => wsp.sendPacked(msg))
.catch(err => {
console.log('Error: ', err);
reject(err);
}
);
});
}
我没有收到任何响应,并且在服务器日志中出现以下错误:
6645484 [gremlin-server-worker-1] WARN io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
io.netty.handler.codec.DecoderException: java.lang.ClassCastException: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0 cannot be cast to org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
at io.netty.handler.codec.http.websocketx.Utf8FrameValidator.channelRead(Utf8FrameValidator.java:77)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler$1.channelRead(WebSocketServerProtocolHandler.java:204)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at org.apache.tinkerpop.gremlin.server.handler.WsAndHttpChannelizerHandler.channelRead(WsAndHttpChannelizerHandler.java:76)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:647)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:582)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:499)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:461)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0 cannot be cast to org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer
at org.apache.tinkerpop.gremlin.server.handler.WsGremlinTextRequestDecoder.decode(WsGremlinTextRequestDecoder.java:55)
at org.apache.tinkerpop.gremlin.server.handler.WsGremlinTextRequestDecoder.decode(WsGremlinTextRequestDecoder.java:41)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
... 40 more
我也尝试使用 Graphexp 并获得相同的结果。
我没有从浏览器控制台或网络选项卡中的 websocket 调用返回任何结果。
解决方案
推荐阅读
- mysql - Sentencia ALTER COLUMN nombre_columna SET no funciona en MySQL
- java - JAVA:将框架和对话框放在前面
- javascript - 如何在不刷新整个页面的情况下使用 AJAX 刷新 div?
- angular - 如何修复这个 Angular 错误:参数表达式 expected.ts(1135)?
- kotlin - 可见性降低的 Kotlin / Native c 互操作
- javascript - 将 JSON 对象转换为 html 字符串
- php - 是否有另一种更好的方法可以使用 php 在 SQL 中按年过滤?
- bash - /bin/test 以红色打印“目录不在工作区中:/Users/myusr”。这是一个错误吗?
- flutter - 如何在 Flutter 的 Dialog 中配置 FocusNode 和 TextEditingController
- tableau-api - 如何在mac上选择数据源中的多列?在 mac 上的画面中