Я использую реакцию js для создания веб-интерфейса для веб-сайта. Сервер express (который является микросервисом) находится между внешним интерфейсом и MongoDB. Я совершаю Ax ios звонки с сервера js на express (URL = http://localhost: 5688 / chat ), используя GET, POST, PUT, когда и где это необходимо.
что-то вроде ниже
Клиентская сторона
var resp = axios.get(`http://localhost:5688/chat`);
resp.then((response) => {
this.setState({data: response.data})
})
Серверная сторона
приложение. js
var app = express();
app.get('/chat', function (req, res) {
try {
var MongoClient = require('mongodb').MongoClient;
var url = '***********';
MongoClient.connect(url, { useUnifiedTopology: true }, function(err, client) {
if (err){
console.log('error occured while connection to databse ' + err);
}
else{
db.collection(collectionName).find({}).toArray(function(err, result){
if (err) {throw err;}
else{
client.close();
res.join(result); // the result would contain the data fetch from db and will be returned to my axios call
}
});
}
});
}
catch (ex) {
res.json(ex);
}
});
app.listen(5688, function(){
console.log('Server listening at http://localhost:5688');
});
Выше описан способ, которым я реализовал ПОЛУЧИТЬ звонок. Точно так же я реализовал методы POST и PUT.
PS: я удалил много промежуточного кода, который не очень полезен для этого вопроса
Теперь я хочу использовать MongoDB change stream для прослушивания всех изменений, которые происходят с моей коллекцией на MongoDB. Мне известны учебные пособия, в которых показано, как можно регистрировать обновленные документы на сервере express ..... например, это учебное пособие . Это позволяет моему express серверу получать все обновленные документы при изменении данных в моей БД.
Но в чем я не уверен, так это в том, как я могу передать эти новые данные своему клиенту, чтобы я мог обновить состояние моего реагирующего компонента этими новыми данными.
Как сделать так, чтобы мой код внешнего интерфейса, сидящий в моем браузере, непрерывно прослушивал мой express сервер (REST API), который уже непрерывно прослушивает все изменения в MongoDB с помощью потоков изменений?
Является ли сокет единственным способом заставить моего клиента постоянно слушать мой сервер? если да, то как мне передать новые данные, поступающие из потоковой передачи MongoDB, в сокет на express сервере
Пожалуйста, дайте мне знать, если я должен предоставить более подробную информацию. Большое вам спасибо.