【问题标题】:Titan Gremlin Server is giving Error "not a WebSocket handshake request: missing upgrade"Titan Gremlin 服务器给出错误“不是 WebSocket 握手请求:缺少升级”
【发布时间】:2016-09-12 23:54:15
【问题描述】:

我从 url 下载了 EC2 服务器上的 Titan 1.0 版

Titan 1.0.0 with Hadoop 1 – recommended

然后我解压缩并使用以下命令运行 Titan 服务器:

bin/titan.sh 启动

Forking Cassandra...
Running `nodetool statusthrift`... OK (returned exit status 0 and printed string "running").
Forking Elasticsearch...
Connecting to Elasticsearch (127.0.0.1:9300).... OK (connected to 127.0.0.1:9300).
Forking Gremlin-Server...
Connecting to Gremlin-Server (127.0.0.1:8182).... OK (connected to 127.0.0.1:8182).
Run gremlin.sh to connect.

然后我尝试了 Titan 1.0 版本中的 HTTP 请求(在 Titan 0.4 版本中 Rexster 工作正常) 但我得到以下错误

不是 WebSocket 握手请求:缺少 upgrade

【问题讨论】:

    标签: titan gremlin rexster tinkerpop3 gremlin-server


    【解决方案1】:

    使用默认设置,您无法通过 HTTP 连接连接到 Titan v1.0.0。更准确地说,您无法通过 HTTP 连接到 Gremlin Server。

    使用 Titan 时,您还使用了来自 Apache TinkerPop framework 的 Gremlin 服务器。 Gremlin 服务器接受 WebSocket 连接(默认)并将查询转发到 Titan 服务器。

    对于 TinkerPop v3.0.1 附带的 Titan v1.0.0(因此 Gremlin 服务器 v3.0.1),您需要在 conf/gremlin-server/gremlin-server.yaml 文件中手动配置 HttpChannelizer

      channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
    

    另请参阅:TinkerPop v3.0.1 documentation: Connecting via REST

    这将替换默认的WebSocketChannelizer,并允许您通过 HTTP 向 Gremlin 服务器发送查询。当您运行 ./bin/titan.sh start 时,实际上是在启动 Gremlin Server 以及所有与 Titan 相关的东西(默认设置中的 Titan 实例、Cassandra 和 Elasticsearch)。

    如果您必须使用浏览器但仍希望使用 WebSocket 连接,您可以使用 https://github.com/jbmusso/gremlin-javascript,它是 Gremlin 服务器的 JavaScript (Node.js/Browser) 客户端。它支持浏览器中的 WebSocket 连接。使用此设置时,您无需编辑 gremlin-server.yaml 文件中的任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2019-05-16
      • 2014-06-29
      • 2020-08-17
      • 2018-11-26
      相关资源
      最近更新 更多