池 Websocket 连接 - NodeJS

Pool Websocket Connections - NodeJS

我希望构建一个节点应用程序来完成以下任务:

  1. 打开几个websocket连接,几乎每个连接都是一个 线程
  2. 允许每个 websocket 有一个 unique/dynamic URL
  3. 根据某种数据库查询在对象中创建一个 websocket 连接池(这样我就可以动态 add/remove 连接)

我决定使用 ws 库 (https://github.com/websockets/ws),因为它是可用的最快和最不臃肿的选项。我目前有以下功能,只支持单ws连接:

chat.prototype.connect = function() {
var self = this;
  self.ws = new ws(url);
  self.ws.on('message', function(data, flags) {
    var message = JSON.parse(data);
    self.handle(message);
  });
};

此代码侦听单个 websocket URL 并将消息传递给我的处理程序以处理消息。相反,我想让这个函数监听多个(可能是数百个)websocket URL。

有没有人对如何完成这个有一些想法?

假设您有 url 个需要连接的列表,存储在名为 urls 的实例 属性 中。您可以这样设置连接:

chat.prototype.connect = function() {
  urls.forEach(this.connectOne.bind(this));
};

chat.prototype.connectOne = function(url) {
  var handle = this.handle.bind(this);
  var conn   = this.connections[url] = new ws(url);
  conn.on('message', function(data, flags) {
    var message = JSON.parse(data);
    handle(message);
  });
};

要实现添加新连接,请定期查询您的数据库并检查每个 URL 是否已存在于 this.connections 中;如果没有,您可以使用 this.connectOne() 添加它。您会执行类似的操作来删除连接。