WebSocket не открыт: readyState 2 (ЗАКРЫТИЕ) - PullRequest
1 голос
/ 01 мая 2020

При холодном запуске мои функции Lambda будут возвращать эту ошибку при попытке инициализировать соединение с Neptune. После этого соединение установится без ошибок. Если лямбда снова остывает, ошибка возвращается.

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

Использование gremlin@^3.4.6 и узла 12.x. Я обнаружил похожую ошибку в пакете ws, которая была отклонена как ошибка реализации. https://github.com/websockets/ws/issues/1410

Нужно ли нам как-то заранее проверять соединения при использовании Gremlin?

Редактировать: Эта проблема, похоже, началась с gremlin@3.4.6. Если я понижу до gremlin@3.4.5, проблема исчезнет.

Редактировать 2: Ошибка снова получена с 3.4.5. 3.4.4 кажется лучше.

1 Ответ

0 голосов
/ 05 мая 2020

Вы должны использовать терминал шаг и дождаться обещаний, которые нужно решить.

const gremlin = require('gremlin');
const { traversal } = gremlin.process.AnonymousTraversalSource;
const { DriverRemoteConnection } = gremlin.driver;

const rc = new DriverRemoteConnection(
  `wss://${process.env.NEPTUNE_ENDPOINT}:${process.env.NEPTUNE_PORT}/gremlin`)
const g = traversal().withRemote(rc);

async function run() {
  // await on Promise<Array>
  const result = await g.V().toList();
  console.log(result);
}

run();

Здесь у вас есть несколько примеров кода о том, как начать работу с JavaScript Gremlin. Вариант: http://tinkerpop.apache.org/docs/current/reference/#gremlin - javascript

При работе с AWS Lambda не следует закрывать соединение с БД для каждого вызова, в противном случае последующие вызовы не будут выполнены.

...