javascript - 使用 Node.js 和 Socket.io 流式传输搜索查询(流式传输到给定套接字!)

标签 javascript node.js websocket express

我正在 Node 中编写一个简单的应用程序,它将在客户端收集搜索查询,将其发送到 Node 服务器,然后从服务器发送到管理页面,我可以在其中跟踪它们。不过,我想牢记安全性,因此我想将搜索查询仅从 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”仅传输到管理页面(出于安全原因)。现在我的 Node 服务器到处广播数据。如何修改我的脚本?提前致谢。

最佳答案

我会让管理员向服务器发送一条消息(比“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);
  });
});

关于javascript - 使用 Node.js 和 Socket.io 流式传输搜索查询(流式传输到给定套接字!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5599364/

相关文章:

javascript - 我正在尝试使用 jQuery 操作页面上的特定链接

javascript - 使用 javascript 限制在特定 div 窗口上拖动 html 内的对象

node.js - 通过聚合对嵌套列进行排序

spring - Spring 中使用 STOMP 的多个房间

python - Django Channels 2.0 channel_layers 不通信

javascript - Azure:将前端 (React) 连接/代理到后端 (Express/node.js)

javascript - 使用新图像刷新页面

node.js - Passport JWT 身份验证提取 token

node.js - 如何在Electron-Forge中成功高效地安装SQLite3?

java - jetty websocket服务器: Send customer status code based on application logic