소켓 서버와 JWT 토큰 주고 받기
https://socket.io/docs/v4/middlewares/
// plain object
const socket = io({
auth: {
token: "abc"
}
});
// or with a function
const socket = io({
auth: (cb) => {
cb({
token: "abc"
});
}
});
io.use((socket, next) => {
const token = socket.handshake.auth.token;
// ...
});
// client-side -- 기본적인 사용법
socket.on("connect_error", (err) => {
console.log(err.message); // prints the message associated with the error
});
// server-side
io.use((socket, next) => {
const err = new Error("not authorized");
err.data = { content: "Please retry later" }; // additional details
next(err); // 에러개체를 사용하여 메서드next를 호출하면 연결이 거부되고 클라이언트가 이벤트수신
});
// client-side
socket.on("connect_error", (err) => {
console.log(err instanceof Error); // true
console.log(err.message); // not authorized
console.log(err.data); // { content: "Please retry later" }
});