Neo4j/graphenedb 关于 Heroku Node.js/Ember.js WebSocket ERR_CONNECTION_RESET 问题

Neo4j/graphenedb on Heroku Node.js/Ember.js WebSocket ERR_CONNECTION_RESET issue

我正在使用 Neo4j 数据库作为 graphenedb 在 Heroku 上使用 Ember.js 框架连接。该应用程序正在通过 Node.js 在本地 运行(不是通过 Heroku 服务器 运行)。

在调用 driver.session() 时;我收到此错误:

与 'ws://hobby-blablabla.dbs.graphenedb.com:24786/' 的 WebSocket 连接失败:WebSocket 握手期间出错:net::ERR_CONNECTION_RESET

我使用 ember-browserify 导入驱动程序:

import Neo4j from 'npm:neo4j-driver';

我调用代码:

var neo4j = Neo4j.v1;

var driver = neo4j.driver(graphenedbURL, neo4j.auth.basic(graphenedbUser, graphenedbPass));
var session = driver.session(); // error it thrown here

我通过 Heroku CLI 使用终端命令检索了连接信息,例如:heroku config:get GRAPHENEDB_BOLT_URL

有可能 Heroku 实际上不允许我从本地计算机连接到数据库。但是,如果能解决这个问题并能够连接,那就太好了。谢谢你的帮助。

我认为您需要设置 CROSS 设置。不确定如何在 Node 中执行此操作,但以下是我设置我的 Rails 应用程序的方法,

Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: [
      :get, :post, :put, :patch, :delete, :options, :head
    ]
  end
end

我是 GrapheneDB 的 Judit。如果我理解你的意思,你正在你的 Ember.js 应用程序中加载 Neo4j javascript driver 并且驱动程序正在尝试通过 WebSocket 连接到 GrapheneDB 数据库。很遗憾,我们不支持这种做法。

我们始终建议向您的堆栈添加一个后端,处理与 GrapheneDB 的连接,并避免从浏览器执行此操作,并防止将您的凭据暴露给使用您的应用程序的任何人。您可以构建一个 Node.js 服务器并使用您现在使用的相同驱动程序管理那里的驱动程序连接 (npm install neo4j-driver)。

顺便说一句,您应该能够使用 Heroku 环境变量的值从本地计算机连接到数据库。您可以通过 运行:

轻松查看
 GDB_URL=`heroku config:get GRAPHENEDB_URL`
 curl -v $GDB_URL