Feather js - Добавить настраиваемое поле для подключения объекта контекста. - PullRequest
0 голосов
/ 11 марта 2020

При использовании перьев js как на стороне клиента, так и на стороне сервера, в хуках приложения (на клиенте) мы получаем объект с несколькими полями, такими как служба, метод, путь и т. Д. c.

Я бы хотел с сокетом io добавить настраиваемое поле для этого объекта. Будет ли это возможно? Чтобы быть более точным, я хотел бы отправить клиенту текущую версию приложения веб-интерфейса, чтобы иметь возможность принудительно установить или предложить refre sh, когда веб-интерфейс устарел (с использованием pwa).

Спасибо !

1 Ответ

1 голос
/ 12 марта 2020

В целях безопасности между клиентом и сервером передаются только params.query и данные (для создания, обновления и исправления). Параметры запроса могут быть извлечены из запроса в контекст с помощью простого перехвата (например, где вы можете передать версию в качестве параметра запроса __v):

const setVersion = context => {
  const { __v, ...query } = context.params.query || {};

  context.version = __v;
  // Update `query` with the data without the __v parameter
  context.params.query = query;

  return context;
}

Кроме того, вы также можете добавить дополнительные параметры, такие как номер версии как extraHeaders , которые затем доступны как params.headers.

Обратный путь (отправка информации о версии с сервера) можно сделать, изменив context.result в ловушка приложения :

const { version } = require('package.json');

app.hooks({
  after: {
    all (context) {
      context.result = {
        ...context.result,
        __v: version
      }
    }
  }
});

Его необходимо добавить к возвращаемым данным, поскольку у веб-сокетов нет заголовков ответа.

...