В настоящее время я настраиваю свое приложение Foxx в качестве конечной точки API GraphQL, и мне нужно будет подключиться к нему из браузера и серверной части Node. Есть пакет arango.client
npm, который я думаю установить для своего бэкэнда, но похоже, что он поддерживает только HTTP. Не лучше ли создать мост TCP-соединения один раз (в узле) и взаимодействовать с ним с меньшей задержкой и меньшими накладными расходами? Я знаю, что ArangoDB поддерживает TCP, но почему это не реализовано в arango.client
?
Подключение к приложению Foxx в качестве TCP-моста?
Ответы (1)
В настоящее время ArangoDB реализует только HTTP в качестве конечной точки транспортировки.
Источником беспокойства может быть то, что указание параметра командной строки arangosh для подключения к серверу выглядит следующим образом:
--server.endpoint tcp://127.0.0.1:8529
Но протокол там говорят HTTP.
Одним из шагов для обхода стека TCP может быть использование сокетов домена unix для связи по протоколу HTTP. Вы можете использовать Необработанные маршруты для связи со службой 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 прямо сейчас.