我正在Node中编写一个简单的应用程序,它将在客户端收集搜索查询,将其发送到节点服务器,从服务器发送到管理页面,我可以在其中跟踪它们。但是我想记住安全性,所以我想从Node只发送搜索查询到管理页面。这就是我到目前为止所做的:
节点服务器:
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'只管道到管理页面(由于安全原因)。现在我的节点服务器到处广播数据。如何修改脚本?提前谢谢。
答案 0 :(得分:1)
我要让管理员向服务器发送消息(比“AdminLogin”更安全)注册为admin,然后您只需发送给该客户端。
服务器:
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);
});
});