Heroku Node.js / Ember.js上的Neo4j / graphenedb WebSocket ERR_CONNECTION_RESET问题

时间:2017-02-27 02:15:17

标签: node.js heroku ember.js neo4j graphenedb

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

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

WebSocket连接到' ws://hobby-blablabla.dbs.graphenedb.com:24786 /'失败: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实际上不允许我从本地计算机连接到数据库。但解决这个问题并能够连接真的很好。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

我是GrapheneDB的Judit。如果我理解你,那么你在Ember.js应用程序中加载Neo4j javascript driver,驱动程序正试图通过WebSocket连接到GrapheneDB数据库。不幸的是,这是我们不支持的。

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

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

 GDB_URL=`heroku config:get GRAPHENEDB_URL`
 curl -v $GDB_URL

答案 1 :(得分:0)

我相信你需要设置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