Titan Gremlin 服务器出现错误 "not a WebSocket handshake request: missing upgrade"

Titan Gremlin Server is giving Error "not a WebSocket handshake request: missing upgrade"

我从 url

在 EC2 服务器上下载了 Titan 版本 1.0

Titan 1.0.0 with Hadoop 1 – recommended

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

bin/titan.sh start

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 工作正常) 但我得到以下错误

not a WebSocket handshake request: missing upgrade

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

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

对于随 TinkerPop v3.0.1(因此 Gremlin 服务器 v3.0.1)附带的 Titan v1.0.0,您需要在 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 文件中编辑任何内容。