来自服务器的Socket.io触发器

问题描述 投票:0回答:1

我问自己:“我怎么能向特定用户触发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")
    }

});
node.js triggers server socket.io notifications
1个回答
1
投票

由于看起来您已经为每个用户创建了一个会话,因此通常的方法是在用户使用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设置为会话。

© www.soinside.com 2019 - 2024. All rights reserved.