gpt4 book ai didi

node.js - 池 Websocket 连接 - NodeJS

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:50 27 4
gpt4 key购买 nike

我正在寻找构建一个 Node 应用程序来完成以下任务:

  1. 打开多个 websocket 连接,几乎就像每个连接都是一个线程
  2. 允许每个 websocket 有一个唯一/动态 URL
  3. 基于某种数据库查询在对象中创建 Websocket 连接池(以便我可以动态添加/删除连接)

我决定使用 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() 添加它。您可以执行类似的操作来删除连接。

关于node.js - 池 Websocket 连接 - NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31252081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com