我正在尝试在 admin.html
中获取新的关联用户列表server.js
app.get('/', function(req, res){
res.sendfile('client.html');
});
app.get('/admin', function(req, res){
res.sendfile('admin.html');
});
io.on('connection', function(socket){
socket.on('login', function(msg){
socket.emit('notification', 'new user joined');
});
socket.on('notification', function(msg){
console.log(msg);
});
});
在这里,我可以尝试从登录事件中发出通知事件,但它没有在控制台中打印任何内容,登录事件从 client.html
当我从 client.html
尝试此操作时<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function(){
var a= $('#username').val();
var b= $('#usermail').val();
var c= $('#reason').val()
socket.emit('login',{username:a,usermail:b,reason:c});
socket.emit('notification','new user joined');
});
</script>
登录事件只有发光,通知不起作用,当我在通知事件工作时单独运行时。
注意:假设我是从 admin.html 做的,我需要设置时间循环以持续检查新用户是否已添加。这就是我在用户连接时自动触发事件的原因。
请告诉我如何实现这个目标?答案 0 :(得分:1)
使用
io.sockets.emit('notification', '')
这将排放每个人。我想你可以在admin.html中捕获该事件。
但如果您认为数据需要安全并且您不想发送给所有人,则可以使用套接字rooms
。
在admin.html
//after socket connection
socket.emit('join_admin_room')
在套接字代码中:
io.on('connection', function(socket){
socket.on('join_admin_room', function(){ //from admin.html
socket.join('admin'); //add this socket to admin room
})
socket.on('login', function(msg){ /from index.html
//this will go to sockets in admin room
io.to('admin').emit('notification') //to admin.html
});
});
答案 1 :(得分:0)
试试这个:
io.on('connection', function(socket){
socket.on('login', function(msg){
socket.broadcast.emit('notification', 'new user joined');
console.log(msg);
});
});
服务器上socket.on('notification', ...)
的代码不起作用,因为它是已发出notification
的服务器