Добавить дополнительные заголовки в сокет feathers из клиента feathers

#websocket #socket.io #feathersjs

#websocket #socket.io #feathersjs

Вопрос:

У меня есть клиент feathers в reactjs, который использует в основном соединения с сокетами, которые, в свою очередь, интегрированы в iframe. Я должен отправить родительский URL-адрес из клиента feathers на свой сервер.

например, мой клиент feathers работает на abc.com , и xyz.com интегрируется abc.com в iframe. Я должен получить xyz.com в объекте сокета feathers или передайте родительский домен в качестве дополнительных заголовков на мой сервер feathers.

Ответ №1:

Дополнительные заголовки могут быть переданы при инициализации сокета.клиент ввода-вывода с помощью extraHeaders опций:

 const socket = io({
  transportOptions: {
    polling: {
      extraHeaders: {
        'x-clientid': 'abc'
      }
    }
  }
});
  

Комментарии:

1. Я знаком с доступом к заголовкам на стороне сервера с помощью приведенного ниже фрагмента кода io.on(‘connection’, функция (сокет) { Object.assign(сокет. feathers, {заголовки: сокет. рукопожатие. заголовки}); сокет. feathers.ip = socket.conn.remoteAddress; }); Но как мне получить доступ к дополнительным заголовкам на стороне сервера.

2. Кроме того, когда я искал в Интернете, я наткнулся на приведенный ниже код const socket = io(‘ 192.168.32.126:3030 ‘,{ transports: [‘polling’, ‘websocket’], // или просто опустить, поскольку это значение по умолчанию // Отправить заголовок авторизации при первоначальном опросе запроса на подключение: { extraHeaders: { urlKing: ‘king of queens’ } } }); Решение, которое вы предложили, и вышеупомянутое являются одним и тем же то же самое, или они разные.

3. Это то же самое, и оно просто будет добавлено к заголовкам, которые вы получаете на стороне сервера.

4. Возможно, я что-то упускаю. код клиента: const socket = io(‘ localhost:3030 ‘,{ websocket: { extraHeaders: { ‘extraone’: ‘extraheading’ } } }); на стороне сервера: app.configure(socketio(функция (ввода-вывода) { io.on(‘подключение’, функция (сокет) { console.log(сокет. рукопожатие. заголовки); Object.assign(сокет. feathers, {заголовки: сокет. рукопожатие. заголовки}); сокет. feathers.ip = socket.conn.remoteAddress; }); Я не получаю дополнительные заголовки, которые я установил ни в журналах, ни в заголовках. Пожалуйста, помогите мне }));

5. Также попытался заменить «websocket» на «polling» на стороне клиента, как вы упомянули. По-прежнему никакой разницы