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

发布于 2024-10-31 03:24:29 字数 857 浏览 5 评论 0原文

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

I am writing a simple app in Node that will collect search queries on client side, send it to Node server and from server to admin page where I can track 'em. However I want to keep in mind security so I want to send search queries from Node ONLY to admin page. This is what I have so far:

Node Server:

var socket = io.listen(app);
socket.on('connection', function(client){
  client.on('message', function(data){
    socket.broadcast(data);
  });
});

Client:

$.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);
    });
});

Admin:

$(document).ready(function(){
  socket = new io.Socket('172.20.14.114', {port: 3000});
  socket.connect();
  socket.on('message', function(data){
    console.log(data);
  });
});

The code above works perfectly but I want to pipe 'search_query' ONLY to the admin page (due to security reasons). Now my Node server broadcasts data everywhere. How do I modify my script? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏了南城 2024-11-07 03:24:29

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

I'd have the admin send a message to the server (something more secure than 'AdminLogin') to register as admin, then you can simply send to that one client.

Server:

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);
    }
  });
});

Admin:

$(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);
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文