Please suggest me the best way to access socket in different file. I am using socket.io.
index.js
io.on("connection", socket => {
socket.on("message", onMessageRecieved)
})
message.js
const onMessageRecieved = (payload) => {
try {
console.log(socket.id)
} catch (error) {
console.log(error);
}
}
I know this is one way to do this.
io.on("connection", socket => {
socket.on("message", (payload)=>onMessageRecieved(payload, socket))
})
But is there any other way. I need that because I am saving user data to socket like socket.uid="ABC_NAME" and want to access after receiving message.
Edited : I was trying to do the same using middleware. The below code works But got error "Maximum call stack size exceeded" while doing same with socket.
//a = socket, x= socket.on()
let a = {
z : 1,
x : function(m=1, n) {
n(m, a)
}
}
let e = (arg1, arg2) => {
console.log(arg1, arg2.z);
}
a.x(2, e)
You can use Closure like onMessageRecieved(socket)
index.js
io.on("connection", socket => {
socket.on("message", onMessageRecieved(socket));
});
message.js
const onMessageRecieved = (socket) => {
return (payload) => {
try {
console.log(socket.id)
} catch (error) {
console.log(error);
}
}
}