Отправка и получение данных с помощью сокета io для двух инструкций - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь найти способ передать от моего клиента инструкцию на сервер, который находится внутри объекта JSON. Вот моя проблема, мой сервер получил мою первую инструкцию. Но моя вторая инструкция deleteFile находится внутри объекта json, и сервер никогда не получал эту вторую инструкцию. Я хотел бы знать, возможно ли это, и делаю ли я это неправильно. Я хочу сделать что-то вроде этого:

Клиент: Я посылаю «инструкцию» с моим var «message»

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', но я не могу сказать ему, что это инструкция. Скажите мне, если я пропустил некоторые данные. Спасибо, если можете помочь.

1 Ответ

0 голосов
/ 06 сентября 2018

Нашел решение с помощью этого поста: сокет, отправка события на сервер с сервера

Я не могу отправить с моего сервера самому себе с помощью «трансляции». Из socket.io doc:

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

Было написано ..

Поэтому я использовал обработчик событий в Node (документ: https://nodejs.org/api/events.html), и он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...