#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» на стороне клиента, как вы упомянули. По-прежнему никакой разницы