【问题标题】:How to create multiple XMPP clients in nodejs using websockets如何使用 websockets 在 nodejs 中创建多个 XMPP 客户端
【发布时间】:2020-08-07 17:37:30
【问题描述】:

我有一个电子应用程序,它创建一个到节点 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 xmpp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2023-03-29
      • 1970-01-01
      • 2020-02-05
      • 2012-06-18
      • 2011-06-23
      相关资源
      最近更新 更多