来自服务器的Socket.io触发器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自服务器的Socket.io触发器相关的知识,希望对你有一定的参考价值。
我问自己:“我怎么能向特定用户触发IO事件(比如某事情成功时的通知)”。但是在帖子请求例如我没有任何套接字对象。
我希望能够这样做:(我应该将套接字对象存储在cookie中吗?还是有其他可能的可用性?)
app.post('/askChangeUserPass', ChangePassIfCorrect , function (req, res){
if (req.session) {
if ( req.data == 1 ){
return res.send("1") // socket.emit("notification", {})
} else {
return res.send("req.data") // socket.emit("notification", {})
}
} else {
return res.render("404")
}
});
答案
由于看起来您已经为每个用户创建了一个会话,因此通常的方法是在用户使用socket.io连接时将socket.id
存储在会话中。然后,从任何http请求,您可以从会话中获取socket.id
并使用:
// get socketid from session
io.to(socketid).emit(...)
要在socket.io和express之间共享会话,请参阅:
How to share sessions with Socket.IO 1.x and Express 4.x?
并且,当在connect
事件中创建socket.io连接时,您可以将socket.id设置为会话。
以上是关于来自服务器的Socket.io触发器的主要内容,如果未能解决你的问题,请参考以下文章
如何在前端获取 socket.on 函数?事件被触发和处理。我正在使用 socket.io、NodeJS 服务器和 Redis.io