Gremlin WebSocket未打开:readyState 2(关闭)

Gremlin WebSocket未打开:readyState 2(关闭),gremlin,amazon-neptune,Gremlin,Amazon Neptune,在冷启动时,当尝试初始化与Neptune的连接时,我的Lambda函数将返回此错误。之后,连接成功,没有错误。如果Lambda再次变冷,则返回错误 const dc=新驱动器远程连接( `wss://${process.env.NEPTUNE_ENDPOINT}:${process.env.NEPTUNE_PORT}/gremlin`, {} ); 常量图=新图(); const g=graph.traversal().withRemote(dc); g、 V(); dc.close(); 使

在冷启动时,当尝试初始化与Neptune的连接时,我的Lambda函数将返回此错误。之后,连接成功,没有错误。如果Lambda再次变冷,则返回错误

const dc=新驱动器远程连接(
`wss://${process.env.NEPTUNE_ENDPOINT}:${process.env.NEPTUNE_PORT}/gremlin`,
{}
);
常量图=新图();
const g=graph.traversal().withRemote(dc);
g、 V();
dc.close();
使用
gremlin@^3.4.6
和节点12.x。我发现针对ws-package报告了一个类似的错误,该错误被视为实现错误。

在使用Gremlin时,我们是否需要提前验证连接

编辑:这个问题似乎是从
gremlin@3.4.6
。如果我降级到
gremlin@3.4.5
问题消失了

编辑2:使用3.4.5再次获取错误。3.4.4似乎更好。

你应该使用a,等待承诺得到解决

const gremlin=require('gremlin');
const{traversal}=gremlin.process.AnonymousTraversalSource;
const{DriverRemoteConnection}=gremlin.driver;
const rc=新驱动器远程连接(
`wss://${process.env.NEPTUNE_ENDPOINT}:${process.env.NEPTUNE_PORT}/gremlin`)
const g=traversal().withRemote(rc);
异步函数run(){
//守约


使用AWS Lambda时,不应为每次调用关闭与DB的连接,否则后续调用将失败。

DriverRemoteConnection.close()是异步操作,因此必须使用Wait。类似于:

const dc = new DriverRemoteConnection(
  `wss://${process.env.NEPTUNE_ENDPOINT}:${process.env.NEPTUNE_PORT}/gremlin`,
  {}
);
const graph = new Graph();
const g = graph.traversal().withRemote(dc);
await g.V().limit(1).next();
await dc.close();

这帮我解决了同样的错误

很好的捕获,但即使是
await
,我也有同样的问题。它在3.4.4中有效,但在3.4.5中无效。