2016-07-19 8 views
1

so baue ich eine iOS app und ich habe begonnen, eine REST API Gebäude w/nodejs, express, & mongodb. Ich füge momentan Instant Messaging und Benachrichtigungen zu meiner App hinzu, sodass ich auf websockets (socket.io) gelesen habe. Nach stundenlangem Lesen kann ich mich ehrlich gesagt nicht mit dem Konzept und der Integration in meine API herumschlagen.Integration socket.io in REST API

Zum Beispiel habe ich diese API Route:

// create new message 
app.post('/newmessage', function (req, res, next) { 

    if (!req.body.message) { 
    res.json({success: false, msg: 'You must type a message.'}); 
    console.log('message: ' + req.body.message); 

    } else { 

    var newMessage = new Message({ 
    fromUser: ObjectID(req.params.id), 
    toUser: ObjectID(req.params.id), 
    message: String, 

    }); 

    // save new message 
     newMessage.save(function(err) { 
     if (err) { 
     res.json({success: false, msg: 'message was unsuccessful.'}); 
     } else { 
     res.json({success: true, msg: 'message sent!'}); 
     console.log(newMessage.createdAt); 
     console.log(newMessage.updatedAt); 

     } 

    }); 

    } 

}); 

Wie würde ich Socket.io in diesen speziellen Aufruf integrieren? Würde ich eine Socket.js-Datei erstellen und von dort exportieren? Backend ist nicht mein Ding, also entschuldige ich mich, wenn das eine schlechte Frage ist. Vielen Dank!

Antwort

5

Die allgemeine Architektur für einen WebSocket oder Socket.io Verbindung für Instant-Messaging-Server oder Push-Benachrichtigungen verwendet, ist wie folgt:

macht
  1. jeder Client eine WebSocket oder Socket.io Verbindung zum Server.
  2. Der Server überwacht diese eingehenden Verbindungen und verwendet bei der ersten Verbindung eine Art Cookie, um festzustellen, welcher Benutzer eine Verbindung herstellt.
  3. Der Server hält dann diese Verbindungen für die Dauer der Benutzersitzung geöffnet und wartet auf eingehende Nachrichten auf ihnen.
  4. Wenn der Server zu jeder Zeit eine Benachrichtigung an den Client senden möchte, kann er die zum gewünschten Client gehörende Verbindung finden und eine Nachricht über diese Verbindung senden.
  5. Der Client wird auf eingehende Nachrichten warten und diese Nachricht erhalten und kann sie dann verarbeiten.
  6. Für Instant Messaging, ein Client würde eine Nachricht an den Server senden, die im Wesentlichen sagt "diese Nachricht an Bob senden" (wobei Bob eine Benutzer-ID für einen anderen Benutzer auf dem System ist). Der Server würde diese Nachricht von dem anderen Client empfangen und würde dann Bobs Verbindung finden und die Nachricht an Bob über diese Verbindung senden.

Ich würde empfehlen, socket.io verwenden, da es eine Reihe von nützlichen Funktionen über webSockets bietet und es sollte socket.io Bibliotheken für alle Plattformen geben, die Sie verwenden würden. Die socket.io documentation enthält eine Demo-App, die einen Chat gibt, der Ihnen eine Idee gibt, wie die Dinge mit socket.io funktionieren.

+0

Nachdem ich die Architektur erklärt habe, ist das Lesen der Dokumente für mich einfacher geworden. Vielen Dank! Ich strengte mich an, versuchte, meinen Kopf um alles zu wickeln. O.o. – V1P3R