【发布时间】:2016-11-20 20:40:35
【问题描述】:
我目前正在将我的 Foxx 应用程序设置为 GraphQL API 端点,我需要从浏览器和 Node 后端连接到它。我正在考虑为我的后端安装一个 arango.client npm 包,但它似乎只支持 HTTP。一次(在 Node 中)创建一个 TCP 连接桥并以更低的延迟和更少的开销与它通信不是更好吗?我知道 ArangoDB 支持 TCP,但为什么 arango.client 没有实现它?
【问题讨论】:
我目前正在将我的 Foxx 应用程序设置为 GraphQL API 端点,我需要从浏览器和 Node 后端连接到它。我正在考虑为我的后端安装一个 arango.client npm 包,但它似乎只支持 HTTP。一次(在 Node 中)创建一个 TCP 连接桥并以更低的延迟和更少的开销与它通信不是更好吗?我知道 ArangoDB 支持 TCP,但为什么 arango.client 没有实现它?
【问题讨论】:
目前 ArangoDB 仅将 HTTP 实现为传输端点。
irretation 的来源可能是为服务器连接指定 arangosh 命令行参数如下所示:
--server.endpoint tcp://127.0.0.1:8529
但是那里使用的协议是 HTTP。
绕过 TCP 堆栈的一个步骤可能是使用use unix domain sockets 进行 HTTP 通信。您可以使用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。
【讨论】: