Piszę aplikację na wzór facebook'a i zastanawiam się w jakis sposób napisać czat między 2 użytkownikami w taki sposób, aby wiadomości od razu zapisywały się w bazie danych. Póki co wpadłem na taki pomysł:
(to jest pseudokod)
router.post('/message', async (req, res) => {
message = new Message ({req.data.message}) // tworzę klasę wiadomości w schemacie MongoDB
message.save() // zapisuje do bazy danych wiadomosc
.then( mess => {
if(active_users.contain(req.message_reciver_id)) // sprawdzam czy użytkownik jest połączony z serwerem (pod kodem wyjaśnienie)
io.to(active_users[req.message_reciver_id]).emit(mess); // wysyłam powiadomienie do odbiorcy jeśli jest połączony
res.status(200).send(mess); // odsyłam wiadomość w przypadku dodania jej do bazy
})
})
Gdzie active_users to będzie obiekt globalny na serwerze, do którego po połączeniu z serwerem(czyli zalogowaniem się) będę wpisywał użytkowników jako pare: _id: socket_name.
Jestem kompletnie nowy w node, a już tym bardziej w socket'ach i dosyć ciężko mi idzie zrozumienie tego (socket'ów), jednak taki koncept wygląda dla mnie na dosyć sensowny...