从另一个事件节点js发射事件

我正在尝试在admin.html中获取新的连接用户列表

  1. client.html(客户端loginauthentication)
  2. admin.html(通知新用户join)

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); }); }); 

在这里,我可以尝试从login事件发出通知事件,但它没有打印任何东西在控制台,从client.html login事件获取触发器。

当我从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> 

login事件只会发出, 通知不起作用,当我运行通知事件时,它是独立的。

注意:假设我是从admin.html做的,我需要设置时间循环来连续检查新用户是否已经添加了。 这就是为什么我在用户连接时自动触发事件。

请教我如何做到这一点?

使用

 io.sockets.emit('notification', '') 

这会排出每个人。 我想你可以在admin.html中捕获这个事件。

但是,如果您认为数据需要安全,而您又不想发送每个人,则可以使用socket io 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 }); }); 

更多信息: http : //socket.io/docs/rooms-and-namespaces/

尝试这个:

 io.on('connection', function(socket){ socket.on('login', function(msg){ socket.broadcast.emit('notification', 'new user joined'); console.log(msg); }); }); 

服务器上的socket.on('notification', ...)的代码不起作用,因为它是发出notification服务器