2011-04-08 52 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