socket.io-client se connectant mais n’émettant pas

Je crée une petite application de discussion chiffrée dans le terminal, à l’aide de socket.io-client et socket.io Le client peut se connecter au serveur, mais n’émet pas le nom d’utilisateur, une fois entré.

Client:

var socket = require('socket.io-client')('http://127.0.0.1:3000'); socket.on('connect_error', function(){ console.log('Failed to establish a connection to the servers, or lost connection'); return process.exit(); }); var prompt = require("prompt-sync")() var news = "Add news: Will be from database. " var username = prompt("Username>: ") console.log("Hold on a sec, just checking that!") console.log("") if (typeof username === "defined"){ socket.emit('user-name', {usr: 'username'}) } socket.on('user-name-good',function(socket){ console.log("Okay! Your username looks good, we just require your password") console.log("If you chose to have no password, please press enter with out pressing space!") var password = prompt("Password>: ") if (typeof password !== "defined"){ console.log("Please provide a password!") return password = prompt("Username>: ") } socket.on('user-name-fail',function(socket){ console.log("Sorry, we could not find, "+username+""+"Please register on the website, or, if you have registered ") return process.exit() }) } ) 

Le code serveur est basé sur le code de l’exemple de discussion socket.io:

 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ socket.on('chat message', function(msg){ io.emit('chat message', msg); }); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 

J’ai ajouté un événement d’erreur, cela ferme le client si une connexion au serveur échoue. Je connais donc sa connexion, toute aide appréciée, j’ai fait des recherches sur ce sujet et essayé beaucoup d’autres méthodes, mais en vain.

De plus, la connexion est établie après la soumission des données, et non au démarrage du code client, quelle en est la cause?

Si vous souhaitez envoyer des événements entre le client et le serveur, vous devez:

Envoyer un événement A du client au serveur et le serveur doit écouter l’événement A.

Si vous souhaitez envoyer l’événement B du serveur au client, le client doit écouter l’événement B.

En dehors de tout le rest de votre code, je ne vois pas où vous écoutez l’événement “message de discussion” côté client.

Socket.io est basé sur ces “événements”. Le code ci-dessous va envoyer l’événement ‘my_event’ au serveur et les données transmises seront l’object {a: 1}.

 socket.emit('my_event', { a: 1 }); 

Si je veux gérer cet événement sur le serveur, je dois l’écouter:

 socket.on('my_event', function(data) { // data is the object { a: 1 } // do stuff.. });