J'ai écrit un code pour diffuser un message à tous utilisateurs :
// websocket and http servers
var webSocketServer = require('websocket').server;
...
...
var clients = [ ];
var server = http.createServer(function(request, response) {
// Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
...
});
var wsServer = new webSocketServer({
// WebSocket server is tied to a HTTP server.
httpServer: server
});
// This callback function is called every time someone
// tries to connect to the WebSocket server
wsServer.on('request', function(request) {
...
var connection = request.accept(null, request.origin);
var index = clients.push(connection) - 1;
...
Veuillez noter :
- Je n'ai pas de référence utilisateur mais seulement une connexion .
- Toutes les connexions des utilisateurs sont stockées dans un
array
.
Objectif : Disons que le serveur Node.js veut envoyer un message à un client spécifique (John). Comment le serveur NodeJs saurait-il quelle connexion possède John ? Le serveur Node.js ne connaît même pas John. Tout ce qu'il voit, ce sont les connexions.
Donc, je crois que maintenant, je ne devrais pas stocker les utilisateurs seulement par leur connexion, au lieu de cela, j'ai besoin de stocker un objet, qui contiendra l'information suivante userId
y el connection
objet.
Idée :
-
Lorsque le chargement de la page est terminé (DOM prêt) - établir une connexion avec le serveur Node.js.
-
Lorsque le serveur Node.js accepte une connexion - générer une chaîne unique et l'envoyer au navigateur du client. Stockez la connexion de l'utilisateur et la chaîne de caractères unique dans un objet, par ex.
{UserID:"6", value: {connectionObject}}
-
Côté client, lorsque ce message arrive, il est stocké dans un champ caché ou un cookie. (pour les futures demandes au serveur NodeJs).
Quand le serveur veut envoyer un message à John :
-
Trouvez l'ID utilisateur de John dans le dictionnaire et envoyez un message par la connexion correspondante.
-
veuillez noter qu'il n'y a pas de code serveur asp.net hébergé ici (dans le mécanisme de message). seulement NodeJs .*
Question :
Est-ce la bonne façon de procéder ?