Nodejs将服务器数据传递给套接字
Nodejs pass server data to the socket?
我用nodejs和mongodb创建了一个用户登录。我有一个路由器。我在下面剥离了一些代码,但是我在这个问题中关心的主要路由是/profile
和/logout
路由。
基本上我想在路由建立时将req
或res
数据传递给套接字。由于路由在服务器上,我不确定如何发出数据。我的意思是,通常是从客户端发送到服务器,而不是从服务器发送到服务器。
所以也许我是盲目的或不够了解,但我的问题是我如何将数据传递到我的套接字。
module.exports.initialize = function(app, passport) {
app.get('/profile', isLoggedIn, function(req, res) {
res.render('profile', { user : req.user });
//socket.emit('user loggedIn', { user : req.user })
});
app.get('/logout', function(req, res) {
req.logout();
res.redirect('/');
});
// route middleware to make sure a user is logged in
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/');
}
};
旁注:我的套接字代码位于我的server.js所以例子。
var users = {};
io.sockets.on('connection', function (socket) {
// Listen to a new user then emit the user to all clients
socket.on('user loggedIn', function (data) {
socket.userName = data;
users[socket.userName] = socket;
io.sockets.emit('user name', Object.keys(users));
console.log(users);
});
});
基本上,我想把所有登录的用户存储在一个对象中,并向客户端发送所有登录的用户,并允许他们进行实时聊天。
它似乎所有我需要做的是传递数据到我的套接字,所以我确信传递数据是简单的,但我不知道如何!
谢谢!
客户端代码但用户名必须唯一
socket.emit('myname',{username:'uniqueid});
服务器端代码
var onlineuser=[];
socket.on('myname',function(data){
socket.username=data.username;
onlineuser.push(data.username);
io.sockets.emit('onlineuser',onlineuser);
});
socket.on('disconnect',function()
{
var i=onlineuser.indexOf(socket.username);
onlineuser.splice(i,1);
io.sockets.emit('onlineuser',onlineuser);
});
相关文章:
- 是否自动更新套接字连接数据?socket.io
- 为什么在Web套接字中使用二进制数据
- 从html页面通过node.js tcp套接字发送数据
- 使用 nodejs 通过 tcp 套接字传输数据
- 如何在画布 html5 中呈现套接字数据
- 如何保持套接字在 setInterval 中发送数据
- 将数据发送给特定用户(套接字上缺少错误处理程序)
- 套接字 - 客户端站点上不显示任何数据
- 使用 angularJs 显示来自套接字 io 的数据
- 使用phantomjs或node从网站上抓取通过网络套接字流式传输的数据
- 使用套接字io和angularjs处理频繁变化的时间序列数据的策略
- 谁在套接字(服务器端)上正确管理mongodb数据
- 套接字IO节点,用于向所有客户端广播数据
- 是否可以从即将关闭的ZMQ套接字获取数据
- Javascript数组数据(在套接字IO应用程序中)
- php套接字发送数据,然后接收数据
- 通过套接字从浏览器发送数据到c# /Java
- 使用套接字将数据从node.js发送到Java
- 套接字.IO初始数据包
- 用java读取套接字数据