У меня есть электронное приложение, которое создает веб-сокет-соединение с 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 для каждой веб-розетки.