Socket 使用 Node.js 发出 ajax 接收的数据

Posted

技术标签:

【中文标题】Socket 使用 Node.js 发出 ajax 接收的数据【英文标题】:Socket emit data received by ajax with Node.js 【发布时间】:2015-06-02 17:15:29 【问题描述】:

服务器端:我通过 ajax 接收用户列表,我试图通过套接字发出它,但只发送到同一个客户端。 像这样的

io.sockets.emit("users list", users: users, me : req.me);//This work, but to all users

socket.emit("users list", users: users, me : req.me); //Im trying something like this

代码

//Receive user list
    app.post('/', function(request, response)
        response.setHeader('Access-Control-Allow-Origin', 'http://localhost'); //To allow response
        var req = JSON.parse(request.body.data);
        if(typeof req != "object") 
            response.send(status: false, msg: "Error on load user list");
         else 
            socket.id = req.me.id;
            req.users.data.forEach(function(user) 
                if(users[user.id] == null)
                    users[user.id] = user;
            );

            //io.sockets.emit("users list", users: users, me : req.me);//This work, but to all users
            socket.emit("users list", users: users, me : req.me); //Im trying something like this
        
        response.send(status: true, msg: "");// echo the result back
    );

我也想知道是否有一些最好的方法来做到这一点......

【问题讨论】:

但是你为什么要发送一些你刚刚从同一个客户那里收到的东西呢? 我的 Node 应用程序在内部和 iframe(与客户端一起)。 php(顶部框架)发送请求,Node(iframe)加载包含用户列表的页面。 【参考方案1】:

您可以尝试将数据发送到特定的套接字,如下所示:

io.sockets.socket(socket.id).emit("用户列表", u​​sers: users, me: req.me);

【讨论】:

以上是关于Socket 使用 Node.js 发出 ajax 接收的数据的主要内容,如果未能解决你的问题,请参考以下文章

Node.js socket.io 没有响应 iOS socket.io 发出请求

尝试发出时,带有 Node.js 的 Socket.io 在路由文件中返回未定义

如果使用 Node.js 在 Socket.io 中的应用程序中登录功能,则为特定用户发出事件

使用 Polymer Iron-ajax 和 Node.js 发出 CORS 请求

Socket.io 在 Node.js + Redis + Heroku(多个测功机)环境中发出并不总是收到

Node.js - 如何从 app.js 外部发出 socket.io 事件?