[英]Trying to get username in socket.io and emitting a message
好吧,所以我半w以自己想要的方式工作。 这是我修改的代码:
//Route to game app
app.get('/game', function (req, res) {
if (req.user) {
res.render('game');
// Socket stuff
io.on('connection', function (socket) {
var dataObj = {
id: req.user.id,
username: req.user.username,
};
socket.emit('startup', dataObj);
console.log(dataObj.username);
// Server Time
var interval = setInterval(function () {
var momentNow = moment();
var data = momentNow.format('LT');
socket.emit('time', data);
}, 60000);
// Chat - Needs work
socket.on('chat', function (msg) {
message = msg;
io.emit('message', { message: message });
});
});
} else {
req.flash('error', 'You need to be signed in!');
res.redirect('/');
}
});
我不得不以这种方式结束,因此可以在socket.io部分中定义我的用户表。 现在的问题是...它说未定义的客户端:
socket.on('startup', function (dataObj) {
console.log(dataObj.username);
});
它说用户是未定义的,但是服务器端是定义的,为什么不像逻辑那样进行传递呢?
在服务器端进行更改
io.emit('message', {message: message, username : username }
和在客户端上
socket.on('message',function(data) {
// do something with data
var message = data.message
var name = data.username
});
在客户端尝试以下操作:
$(function(){
var username = prompt("Enter your name");
var userObj = {username: username}
$('#chat').load('chat.ejs', function () {
$('button#test').click(function () {
console.log('this is a test');
});
$('#chat-form').submit(function (event) {
event.preventDefault();
var msg = $('#m').val();
console.log(msg);
$('#m').val('');
if (!connected || msg == '') {
return false;
}
userObj.message = msg;
socket.emit('chat', userObj);
});
// Populat chat
socket.on('message', function (data) {
$('#messages').append($('<li>').html(data.username + ': ' + data.message));
});
});
})
在服务器上:
io.on('connection', function (socket) {
var interval = setInterval(function () {
var momentNow = moment();
var data = momentNow.format('LT');
socket.emit('time', data);
}, 60000);
// Chat - Needs work
socket.on('chat', function (data) {
io.emit('message', data);
});
});
好的,尽管我觉得这有点奇怪:
var userObj = {
id: req.user.id,
username: req.user.username,
};
var dataObj = {
id: userObj.id,
username: userObj.username,
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.