Подключение к приложению Foxx в качестве TCP-моста?

В настоящее время я настраиваю свое приложение Foxx в качестве конечной точки API GraphQL, и мне нужно будет подключиться к нему из браузера и серверной части Node. Есть пакет arango.client npm, который я думаю установить для своего бэкэнда, но похоже, что он поддерживает только HTTP. Не лучше ли создать мост TCP-соединения один раз (в узле) и взаимодействовать с ним с меньшей задержкой и меньшими накладными расходами? Я знаю, что ArangoDB поддерживает TCP, но почему это не реализовано в arango.client?


person artnikpro    schedule 18.02.2016    source источник


Ответы (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 прямо сейчас.

person dothebart    schedule 18.02.2016
comment
Спасибо за ответ. Здорово, что вы планируете реализовать эту функцию, она будет очень полезна. Для меня не очень важно иметь эту функцию прямо сейчас, поэтому я думаю, что я просто подожду, пока она будет реализована в Foxx. Спасибо! - person artnikpro; 18.02.2016