Сокет отправляет повторяющиеся сообщения клиенту - PullRequest
0 голосов
/ 10 июня 2019

Я настраиваю сервер веб-сокетов с socket.io, и кажется, что сообщения отправляются как минимум дважды. Иногда даже трижды. (очень редко, даже 4+ раза) Они никогда не отправляются, хотя. Как мне настроить мои обработчики или мой клиентский код, чтобы каждое сообщение получалось ровно один раз за все время?

Мой клиент работает в swift, а мой сервер в node.js. Я запускаю Ubuntu 16.04 на самом сервере.

Node.js:

// Here is an array of all connections to the server
var connections = {};

io.sockets.on('connection', newConnection);

function newConnection(socket) {

  socket.on('add-user', function(user) {

    connections[user.id] = {
      "socket": socket.id
    };

  });

  socket.on('chat-message', function(message) {

    console.log(message);

    if (connections[message.receiver]) {

      console.log("Send to: " + connections[message.receiver].socket);

// Here are some varients of the emit command. Seems like they all do the same      

//io.sockets.connected[connections[message.receiver].socket].emit("chat-message", message);
      //io.to(connections[message.receiver].socket).emit("chat-message", message);

      socket.broadcast.to(connections[message.receiver].socket).emit("chat-message", message);

    } else {
      console.log("Send push notification")

    }
  });

  //Removing the socket on disconnect
  socket.on('disconnect', function() {
    console.log("The client disconnected");
    for (var id in connections) {
      if (connections[id].socket === socket.id) {
        delete connections[id];
      }
    }
  })
}

"console.log (message)"; в обработчике сообщений вызывается только один раз. Это запутанная часть для меня. Если обработчик вызывается дважды, почему он печатается только один раз? Тем не менее, на обработчике в моем быстром коде обработчик для полученных сообщений вызывается несколько раз.

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