作为 TCP 桥连接到 Foxx 应用程序?

Connecting to Foxx app as TCP bridge?

我目前正在将我的 Foxx 应用设置为 GraphQL API 端点,我需要从浏览器和 Node 后端连接到它。我想为我的后端安装一个 arango.client npm 包,但它似乎只支持 HTTP。创建一次 TCP 连接桥(在 Node 中)并以更低的延迟和更少的开销与其通信不是更好吗?我知道 ArangoDB 支持 TCP 但为什么它没有在 arango.client 中实现?

目前 ArangoDB 仅将 HTTP 实现为传输端点。

错误的来源可能是为服务器连接指定 arangosh 命令行参数,如下所示:

--server.endpoint tcp://127.0.0.1:8529

但是那里使用的协议是 HTTP。

绕过 TCP 堆栈的一个步骤可能是 use unix domain sockets for the HTTP communication. You can use Raw routes 与您的 Foxx 服务通信:

var db = require('arangojs')();
var myFoxxService = db.route('my-foxx-service');
myFoxxService.post('users', {
    username: 'admin',
    password: 'hunter2'
})
.then(response => {
    // response.body is the result of
    // POST /_db/_system/my-foxx-service/users
    // with JSON request body '{"username": "admin", "password": "hunter2"}'
});

ArangoDB 3.0 将带来 velocypack 及更高版本的原始 tcp 协议,使 HTTP 成为副业。还计划为此提供 Foxx 支持。

虽然 arangojs 目前是纯 js 实现,但我们计划在未来提供类似 API 的原生后端。所以如果你想从中受益,你现在应该使用 ArangoJS。