J'essaie d'envoyer un message privé entre les utilisateurs dans un simple chat que j'ai créé en utilisant HTML5 websocket et node.js.Comment utiliser l'ID client dans HTML5 websocket et node.js chat?
Lorsque les utilisateurs se connectent, je crée simple ID pour eux (ID de connexion) et d'ajouter que ce CLIENTS=[];
Quand je fais une console.log(CLIENTS);
, je vois tous les ID comme ceci:
[0, 1, 2]
Maintenant, je dois utiliser les ID pour envoyer des messages privés aux utilisateurs.
donc je suis allé de l'avant et ce (Pour les fins de test, j'ai juste besoin d'envoyer le message à l'utilisateur avec ID 2):
var express = require('express'),
app = express(),
http = require('http').Server(app),
WebSocketServer = require('ws').Server,
wss = new WebSocketServer({
port: 8080
});
CLIENTS = [];
connectionIDCounter = 0;
app.use(express.static('public'));
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
wss.broadcast = function broadcast(data) {
wss.clients.forEach(function each(client) {
client.send(data);
});
};
wss.on('connection', function(ws) {
/////////SEE THE IDs HERE////////////////
ws.id = connectionIDCounter++;
CLIENTS.push(ws.id);
console.log(CLIENTS);
ws.on('message', function(msg) {
data = JSON.parse(msg);
/////SEND A PRIVATE MESSAGE TO USER WITH THE ID 2//////
CLIENTS['2'].send(data.message);
});
});
http.listen(3000, function() {
console.log('listening on *:3000');
});
Quand je lance mon code, je reçois le texte suivant erreur:
TypeError: CLIENTS.2.send is not a function
Pourriez-quelqu'un s'il vous plaît des conseils sur ce problème?
Toute aide serait appréciée.
Merci d'avance.
'CLIENTS = []' => 'CLIENTS = {}', 'CLIENTS.push (ws.id);' => 'CLIENTS [ws.id] = ws'. Fondamentalement, vous avez enregistré l'identifiant du client, au lieu de la connexion client. –
qu'est-ce que cela signifie: CLIENTS = [] => CLIENTS = {}, CLIENTS.push (ws.id); => CLIENTS [ws.id] = ws? –
Remplacer le tableau, avec objet. Enregistrer la connexion ws entière, au lieu de l'ID uniquement. –