websocket 结合 mongodb 代码案例
时间: 2023-11-04 07:02:52 浏览: 34
这是一个使用 Node.js、WebSocket 和 MongoDB 的代码示例,用于实时更新 MongoDB 数据库的文档。
首先,我们需要安装 `ws` 和 `mongodb` 这两个 Node.js 模块:
```
npm install ws mongodb
```
然后,我们可以编写一个简单的 WebSocket 服务器:
```js
const WebSocket = require('ws');
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/mydb';
const wsServer = new WebSocket.Server({ port: 8080 });
wsServer.on('connection', (ws) => {
console.log('Client connected');
MongoClient.connect(url, (err, db) => {
if (err) throw err;
const collection = db.collection('mycollection');
const changeStream = collection.watch();
changeStream.on('change', (change) => {
ws.send(JSON.stringify(change.fullDocument));
});
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
```
这个服务器将在 `8080` 端口上监听 WebSocket 连接,并在每次 MongoDB 中指定集合的文档发生更改时,将更改后的完整文档发送给客户端。在这个例子中,我们假设 MongoDB 中有一个名为 `mydb` 的数据库和一个名为 `mycollection` 的集合。
最后,我们可以编写一个简单的客户端,以便连接到 WebSocket 服务器并接收来自服务器的更新:
```js
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => {
console.log('WebSocket connected');
});
ws.on('message', (data) => {
console.log('Received update:', data);
});
```
这个客户端将连接到 `localhost:8080` 上的 WebSocket 服务器,并在每次收到来自服务器的更新时,将其打印到控制台中。
注意,这个示例代码仅用于演示如何将 WebSocket 和 MongoDB 结合起来,实现实时数据同步。在实际应用中,还需要考虑安全、性能等方面的问题。