2011-04-08 51 views
1

我在Node中编写一个简单的应用程序,它将收集客户端的搜索查询,将其发送到节点服务器,并从服务器发送到管理页面在那里我可以跟踪他们。不过,我想牢记安全性,因此我想只将节点的搜索查询发送到管理页面。这是我到目前为止有:使用Node.js和Socket.io流式传输搜索查询(流式传输到给定的套接字!)

节点服务器:

var socket = io.listen(app); 
socket.on('connection', function(client){ 
    client.on('message', function(data){ 
    socket.broadcast(data); 
    }); 
}); 

客户:

$.getScript('http://127.0.0.1:8000/socket.io/socket.io.js', function() { 
    var socket = new io.Socket('127.0.0.1', {'port': 8000}); 
    socket.connect(); 
    socket.send(search_query); 
    }); 
}); 

联系:

$(document).ready(function(){ 
    socket = new io.Socket('172.20.14.114', {port: 3000}); 
    socket.connect(); 
    socket.on('message', function(data){ 
    console.log(data); 
    }); 
}); 

上面的代码完美地工作,但我想管'search_query'仅限于管理页面(由于安全原因)。现在我的节点服务器在各处广播数据。我如何修改我的脚本?提前致谢。

回答

1

我想让管理员发送一条消息给服务器(比'AdminLogin'更安全)注册为管理员,那么你可以简单地发送到该客户端。

服务器:

var socket = io.listen(app), admin; 
socket.on('connection', function(client){ 
    client.on('message', function(data){ 
    if(data === 'AdminLogin') { 
     admin = client; 
    } 
    if(admin) { 
    admin.send(data); 
    } 
    }); 
}); 

联系:

$(document).ready(function(){ 
    socket = new io.Socket('172.20.14.114', {port: 3000}); 
    socket.connect(); 
    socket.send('AdminLogin'); 
    socket.on('message', function(data){ 
    console.log(data); 
    }); 
}); 
+0

是的,就是这样。谢谢! – Pono 2011-04-08 20:55:28