0
私は現在、socket.io-client/socket.ioログインシステムで作業しています。問題はサーバーを起動し、クエリが実行され、データベース内の現在のデータを取得しています。私が使用している場合、彼らは、サーバーを再起動するまで、ログインすることができませんユーザー登録:検索したデータをMySQLクエリから更新しますか? Node.js node-mysql
SELECT * FROM mytable ORDER BY id DESC LIMIT 1
その後ばかり登録したユーザーは、どのように私はこの問題を解決することができ、既に登録されているユーザーのログイン、およびすることはできませんか?
ユーザー名とパスワードがクライアントからサーバーに送信されると、Mysqlコードを含む関数が実行されます。論理的には、新しい接続ごとにクエリを再実行すると考えられましたが、 。
マイコード:
サーバー:
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');
});
クライアント:
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)
})
あなたの質問は非常に不明です。サーバーの起動時に照会するのはなぜですか?いくつかのコードサンプルを投稿してください。あなたはおそらく、私たちが見直す必要がある悪いコード設計に苦しんでいるでしょう。 – vladaman
、申し訳ありません。 – FlerrElectronics
より正確には、最初の行のみが表示されます。この場合、Ozzieとパスワードは、データベース内のそのエントリの後にあるものはすべて取得されません。私は間違ったクエリを使用している可能性が最も高いです。 – FlerrElectronics