Я пытаюсь использовать Socket.io в React с Express Backend, который использует JWT (Passport JWT).На моих обычных маршрутах у меня нет проблем с моей аутентификацией.Заголовок авторизации отправляется (токен носителя авторизации) и проверяется на бэкэнде, однако я просто не понимаю, как включить токен носителя при отправке данных из React Client.
Я просмотрел extraHeaders опция, но просто не смог заставить их работать.
Вот мой код:
class Chat extends React.Component {
constructor(props) {
super(props);
this.state = {
username: "",
message: "",
messages: []
};
this.socket = io("localhost:5000", {
extraHeaders: {
Authorization: "My Bearer authorization_token_here"
}
});
this.socket.on("RECEIVE_MESSAGE", function(data) {
addMessage(data);
});
const addMessage = data => {
console.log(data);
this.setState({ messages: [...this.state.messages, data] });
console.log(this.state.messages);
};
this.sendMessage = ev => {
ev.preventDefault();
this.socket.emit("SEND_MESSAGE", {
author: this.state.username,
message: this.state.message
});
this.setState({ message: "" });
};
}
render() {jsx code here}
Соединение с сокетом настроено, однако я понятия не имею, как получить токенна сервер.В идеале я отправляю идентификатор в токене, декодирую его на сервере и ищу дополнительную информацию о пользователе в моей БД.
С праздником, и я благодарен за любую помощь или подсказки, как решить мою проблему,