池 Websocket 连接 - NodeJS
Pool Websocket Connections - NodeJS
我希望构建一个节点应用程序来完成以下任务:
- 打开几个websocket连接,几乎每个连接都是一个
线程
- 允许每个 websocket 有一个 unique/dynamic URL
- 根据某种数据库查询在对象中创建一个 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()
添加它。您会执行类似的操作来删除连接。
我希望构建一个节点应用程序来完成以下任务:
- 打开几个websocket连接,几乎每个连接都是一个 线程
- 允许每个 websocket 有一个 unique/dynamic URL
- 根据某种数据库查询在对象中创建一个 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()
添加它。您会执行类似的操作来删除连接。