使用本地gremlin-javascript包通过WebSockets查询Gremlin

时间:2017-09-06 15:31:28

标签: websocket vue.js cors gremlin

我正在尝试在浏览器中使用gremlin-javascript客户端。

我已经从Titan Graph Db的github下载并安装了Titan-Hadoop堆栈。我已经设置了Gremlin服务器来使用WebSocket Channelizer。 Gremlins主机和端口分别是默认的“localhost”和“8182”,我可以将Gremlin-Console连接到它。我用“GraphOfTheGods”数据填充了服务器,我可以使用gremlin-console查询数据。通过将gremlin-servers channelizer切换到http变体,我可以通过url在浏览器中查询服务器;例如。本地主机:8182小鬼= 100-1。我的偏好是使用WebSockets,因此此配置已重置。

我希望能够从我的Web应用程序中查询数据库。我使用完整模板设置了Vue.js应用程序。我通过npm安装了gremlin-javascript,并在按钮单击事件中运行以下代码:

import { createClient, bindForClient } from 'Gremlin'

export default class titanService {
  async query (name, callback) {
    const getByName = (name) => ({
      gremlin: 'g.V().has("name", name)',
      bindings: { name }
    })

    const client = createClient()
    const queries = bindForClient(client, { getByName })
    const users = await queries.getByName('saturn')
    callback(users)
  }
}

这会触发一个GET请求,该请求随后会崩溃成400错误,显而易见的响应是“不是WebSocket握手请求:缺少升级”。

对localhost:8182 / gremlin的GET请求是错误的。错误的协议。错误的网址。没有负载。我也收到了CORS错误。

  

Fetch API无法加载127.0.0.1:8182/gremlin。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许原点'localhost:8080'访问。响应具有HTTP状态代码400.如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。

有没有其他人可能遇到过这个问题,或者使用Gremlin-Javascript客户端连接到Gremlin可以帮助我的任何经验?

我想讨论一下。可以这样做吗?有没有首选方式?

0 个答案:

没有答案