javascript - 使用socket io发送和获取数据的两条指令

标签 javascript angularjs json node.js socket.io

我正在尝试找到一种方法,从客户端向 JSON 对象内的服务器发出指令。 这是我的问题,我的服务器收到我的第一条指令。但是我的第二条指令“deleteFile”位于 json 对象内,并且服务器从未收到第二条指令。 我想知道这是否可能,以及我是否以错误的方式这样做。 我想做这样的事情:

客户端:我用我的 var“消息”发出“指令”

service.deleteFile = function (peer, filename, callback) {                 
  if (! LoginService.connected || ! LoginService.socket) {
    console.log("deleteFile : not connected to server");
    callback("no server");

  var message = {
    message : 'deleteFile',
    dest_list : _.flattenDeep([peer]),
    filename : filename,
  };

  LoginService.socket.emit('instruction',(message));
  console.log("service.deleteFile : " , message);
  callback(200);

};

在服务器 app.js 上用于“指令”:

socket.on('instruction', function(jsonMessage){
var dest_list = jsonMessage.dest_list;
var message = jsonMessage.message;
var filename = jsonMessage.filename;

var user_id = dest_list;
var instruction = {
  message : message,
  user_id : user_id,
  filename : filename,
};

if (dest_list.length){
  for (var i = 0; i < dest_list.length; i++) {
    var user_id = dest_list[i].toLowerCase();
    if (user_id in socket_clients){
      var socketId = socket_clients[user_id].socketId;
    socket.broadcast.to(socketId).emit('instruction', instruction);
    console.log(instruction); //print "{message:'deleteFile', user_id: ['emitter'], filename: 'thegoodfile'}
    }
    else{
      console.log("Error", user_id);
    }
  }
} else{
    console.log("Error");
} });

然后在服务器 app.js 上执行“deleteFile”(该指令位于从客户端发出的 JSON 对象内):

 socket.on('deleteFile', function(jsonMessage) {
console.log("Test message"); };

我认为我的服务器不理解我的指令“deleteFile”,但我找不到方法告诉他这是一条指令。 告诉我我是否遗漏了一些信息。 如果您能提供帮助,谢谢。

最佳答案

通过这篇文章找到了解决方案:socket, emit event to server from server

我无法通过“广播”从我的服务器发送给他自己。来自socket.io 文档:

 // sending to all clients except sender
socket.broadcast.emit('broadcast', 'hello friends!');

写的是..

所以我在 Node 中使用了事件处理程序(文档: https://nodejs.org/api/events.html )并且它有效。

关于javascript - 使用socket io发送和获取数据的两条指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52187693/

相关文章:

javascript - 自定义类中的原生JS : "Uncaught TypeError: Cannot set property ' innerHTML' of undefined"

javascript - AdBlock 阻止我的网页之一

javascript - 动画在 FF 和 IE 上卡住,但在 Chrome 上不会

javascript - 循环遍历 JSON 并将值添加到代码中?

javascript - 如何在 JavaScript 中验证字符串?

javascript - 记录 Javascript/Jquery 错误和异常

angularjs - 如何在angularjs ng-repeat中访问上一个和下一个项目

java - Jackson EnumMap key 序列化

java - 如何使用 org.json.simple 包在 Java 中读取 JSON 文件

javascript - 加载添加了 javascript 的网站