Ich arbeite derzeit an einem socket.io-Client/socket.io Login-System, das Problem ist, wenn ich den Server starten, eine Abfrage durchgeführt wird, die aktuellen Daten in der Datenbank abrufen, wenn a Benutzer registriert sie nicht in der Lage sind, um sich einzuloggen, bis der Server neu gestartet wird, wenn ich benutze:Aktualisieren von abgerufenen Daten aus einer MySQL-Abfrage? Node.js node-mysql
SELECT * FROM mytable ORDER BY id DESC LIMIT 1
Dann nur der Benutzer, der nur anmelden können registrierte und nicht-Benutzer, die bereits registriert sind, wie kann ich dieses Problem beheben?
Ich habe es so, wenn der Benutzername und Passwörter vom Client an den Server übermittelt werden, wird die Funktion mit dem Mysql-Code durchgeführt, logisch dachte ich, dies würde die Abfrage für jede neue Verbindung erneut ausführen, aber es tut es nicht .
Mein Code:
Server:
console.log("Berdio - A Awesome socket server for everyone!")
console.log("Created with Love, by OzzieDev! Enjoy the awesomeness!")
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
function dosql(){
var mysql = require('mysql')
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'Berd'
})
connection.query('SELECT * FROM Berd_Data', function(err, rows, fields, result){
if (err) throw err;
var usrname = rows[0].Username
var psword = rows[0].Password
global.usrname = usrname
global.psword = psword
});
}
io.on('connection', function(socket){
})
socket.on('user-name', function(data){
dosql()
socket.broadcast.emit('user-connected',data.u);
console.log(u,p)
var u = data.u
var p = data.p
console.log(u,p + " " + "emitted Data");
if (u === global.usrname && p === global.psword){
socket.emit('AuthGood')
}else{
socket.emit('AuthFail')
}
socket.on('msg',function(data){
var message = data.message
if (typeof message !== "undefined"){
socket.broadcast('newmsg',msg)
}
if(message === "quit"){
process.exit();
}
})
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
Auftraggeber:
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")()
console.log("Your Ip has been logged, but encrypted. Please see website for more info")
var news = "Add news: Will be from database. "
var username = prompt("Username>: ")
var password = prompt("Password>: ")
if (typeof username, password !== "undefined"){
socket.emit('request')
socket.emit('user-name', { u: username, p: password });
}
socket.on('AuthGood',function(socket){
console.log("Your details have been authenticated, hello again!")
var message = prompt("message>: ")
})
socket.on('AuthFail',function(socket){
console.log("Your details failed to authenticate, Wrong Pass/Username combination, quitting!")
return process.exit();
})
if (typeof message !== "undefined"){
socket.emit('msg',{m: message})
}
socket.on('user-connected',function(data){
var userconn = data.username
console.log(username +" " +"Has joined us!")
})
socket.on('newmsg',function(data){
var newmsg = data.msg
console.log("-----------------------------------")
console.log(username+">:" + " " +msg)
})
Ihre Frage ist sehr unklar. Warum fragen Sie ab, wann der Server startet? Posten Sie einige Codebeispiele. Sie leiden wahrscheinlich an schlechtem Code-Design, das wir überprüfen müssen. – vladaman
Wird tun, Entschuldigung. – FlerrElectronics
Genauer gesagt, es scheint, dass nur die erste Zeile, die in diesem Fall ist: Ozzie und das Passwort, keine Sache nach diesem Eintrag in der Datenbank abgerufen wird. Ich verwende höchstwahrscheinlich die falsche Abfrage. – FlerrElectronics