来自服务器的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触发器的主要内容,如果未能解决你的问题,请参考以下文章

来自 php 源的 Socket.io

来自 php 源的 Socket.io

如何在前端获取 socket.on 函数?事件被触发和处理。我正在使用 socket.io、NodeJS 服务器和 Redis.io

Socket IO事件多次触发NodeJS

是否有拦截来自客户端服务器的所有 socket.io 数据的功能

服务器的 socket.io 监听器无故触发两次