如何使用 websockets 在 nodejs 中创建多个 XMPP 客户端

How to create multiple XMPP clients in nodejs using websockets

我有一个 electron 应用程序可以创建到节点 js 服务器的 websocket 连接。它向该服务器发送一个 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 跟踪,并且按照我的预期创建了两个 websocket 连接,但是在发送消息时,它们都使用了最新的寄存器。我认为这是因为 XMPP 客户端是一个常量,无论谁是最后一个,它都会将这些客户端用于所有未来的请求。

如何让每个 websocket 连接都有自己的 XMPP 客户端,几乎就像每个 websocket 特定的请求范围的客户端。

我在 websocket 连接之外有一个常量,将其更改为在内部有一个 var,这样每个连接都有自己的客户端。