1

クライアント側で検索クエリを収集し、それをノードサーバーに送信し、サーバーから管理ページに送信して追跡できる単純なアプリをノードで作成しています。ただし、セキュリティを念頭に置きたいので、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' を管理ページにのみパイプしたい (セキュリティ上の理由から)。現在、私の Node サーバーはどこにでもデータをブロードキャストしています。スクリプトを変更するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

1

管理者にメッセージをサーバー (「AdminLogin」よりも安全なもの) に送信して管理者として登録してもらい、その 1 つのクライアントに送信するだけです。

サーバ:

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);
  });
});
于 2011-04-08T20:33:03.850 に答える