[英]Mongoose and socket.io two connections
我正在使用socket.io-adapter-mongo使在我的應用程序中創建平衡加載程序成為可能。 除此之外,我想使用貓鼬來管理數據庫。 如果我使用這兩個包給出的api是
var io = require('socket.io')(3000);
var mongo = require('socket.io-adapter-mongo');
io.adapter(mongo({ host: 'localhost', port: 27017, db: 'mubsub' }));
mongoose.connect('mongodb://user:pass@localhost:port/database');
所以如果我想同時使用它們,我必須連接到數據庫兩次嗎? 或者這是一種通過一個連接使用它們的方法?
謝謝
實際上,您似乎必須使用 2 個連接。
如果您檢查socket.io-adapter-mongo的代碼,似乎他們正在使用mubsub建立與 mongo 的連接,所以我認為沒有辦法只使用一個連接而不改變庫。
下面的代碼將工作
const mongoose = require('mongoose')
const { createAdapter } = require("@socket.io/mongo-adapter")
const collection = mongoose.connection.createCollection("chatCapped", {
capped: true,
size: 1e6
})
/* io socket.io Server instance */
collection
.then(db => io.adapter(createAdapter(db)))
.catch(error => {
/* Collection already exists */
if (error.code == 48) {
io.adapter(createAdapter(mongoose.connection.collection("chatCapped")))
return;
}
console.log(error)
})
貓鼬設置代碼
const MONGODB_URI = 'mongodb://localhost:27017/ChatApp?retryWrites=true'
const mongoose = require("mongoose");
mongoose.connect(MONGODB_URI, {
useUnifiedTopology: true,
}, (error, _db) => {
if (error) throw error
console.log(`MongoDB Connected!!`);
})
mongoose.Promise = global.Promise;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.