Как создать несколько клиентов XMPP в nodejs с помощью веб-сокетов - PullRequest
1 голос
/ 24 апреля 2020

У меня есть электронное приложение, которое создает веб-сокет-соединение с node js сервером. Он отправляет на этот сервер запрос JSON, сообщая ему о создании клиента xmpp.

let message = {
  action: "setupXmpp",
  data: {
    username,
    password,
  },
};

socket.send(JSON.stringify(message));

На этом сервере у меня есть переключатель, который считывает действие сообщения и создает клиент xmpp. Код в xmppActions является стандартным шаблоном, взятым из xmpp repo

const xmppActions = require("./Webapp/xmppActions");
case "setupXmpp":
    console.log(`Received setupXmpp request`);

    var { username, password } = message.data;
    const xmpp = xmppActions.setUpXMPPconn(username, password);

    xmpp.on("online", async (address) => {
      console.log("▶", "online as", address.toString());
      ws.send("Register xmpp Success!");
    });
    break;

Все работает отлично Я могу создать клиент xmpp и отправлять сообщения, все хорошо.

Моя проблема когда у меня открыты два клиента, и они оба регистрируются (с разными именем пользователя и паролем), кто бы ни был последним запросом, он всегда перекрывает предыдущий регистр Я выполнил трассировку Wireshark, и два подключения к веб-сокету созданы, как я и ожидал, но когда дело доходит до отправки сообщений, они оба используют самый последний регистр. Я предполагаю, что это потому, что XMPP-клиент является константой, и кто бы ни был последним, он использует их для всех будущих запросов.

Как мне сделать так, чтобы каждое соединение с веб-сокетом получало своего собственного XMPP-клиента, почти как спецификация клиента в области запроса c для каждой веб-розетки.

...