【问题标题】:Streaming search queries with Node.js and Socket.io (streaming to a given socket!)使用 Node.js 和 Socket.io 流式搜索查询(流式传输到给定的套接字!)
【发布时间】:2011-08-01 17:52:44
【问题描述】:

我正在 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”传送到管理页面(出于安全原因)。现在我的节点服务器到处广播数据。如何修改我的脚本?提前致谢。

【问题讨论】:

    标签: javascript node.js websocket express


    【解决方案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);
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2021-05-18
      • 2012-10-31
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多