在Node.js和socket.io中使用MySql数据库记录HTML5页面
我尝试使用HTML5+MySQL+Node.js+socket.io登录数据库,但失败了。请帮忙。 我想用Node.js和socket.io从HTML5页面登录到MySQL数据库 我有一个HTML5页面,有两个文本框用户名和密码,还有一个登录按钮。 用户希望从HTML5页面登录,并将用户/密码发送到服务器,服务器收到用户/密码,并使用mysql数据库进行验证并返回结果 我的代码: server_test.js在Node.js和socket.io中使用MySql数据库记录HTML5页面,mysql,html,node.js,socket.io,Mysql,Html,Node.js,Socket.io,我尝试使用HTML5+MySQL+Node.js+socket.io登录数据库,但失败了。请帮忙。 我想用Node.js和socket.io从HTML5页面登录到MySQL数据库 我有一个HTML5页面,有两个文本框用户名和密码,还有一个登录按钮。 用户希望从HTML5页面登录,并将用户/密码发送到服务器,服务器收到用户/密码,并使用mysql数据库进行验证并返回结果 我的代码: server_test.js var io = require('C:/Program Files (x86)/no
var io = require('C:/Program Files (x86)/nodejs/node_modules/socket.io/lib/socket.io');
var socket = io.listen(8124);
socket.sockets.on('connection',function(socket){
socket.on('login', function(data, usr, pass){
var mysql = require('mysql');
var TEST_DATABASE = 'employee';
var TEST_TABLE = 'tblusers';
var client = mysql.createClient({
user: 'root',
password: 'secret10',
});
client.query('USE '+TEST_DATABASE);
client.query(
'SELECT name FROM '+TEST_TABLE+' WHERE user = '+usr+' AND password = '+pass,
function selectCb(err, results) {
if (err) {
throw err;
}
//Emit a message to client
socket.emit('retuLogIn',{username: results[0]['name']});
client.end();
}
);
});
socket.on('disconnect', function(){
console.log('Server has disconnected');
});
});
客户端测试.html
<!doctype html>
<html>
<title>WebSocket Client Demo [socket.io]</title>
<script src="/json.js"></script> <!-- for ie -->
<script src="http://localhost:8124/socket.io/socket.io.js"></script>
<script>
function connect() {
try
{
var socket = io.connect('http://localhost:8124/');
socket.on("connect",function(){
document.getElementById('status').innerHTML ="Browser has connected to the app server";
});
socket.on('login', function (data, document.getElementById('txtUser').value, document.getElementById('txtPass').value) {
//alert(data.hello);
document.getElementById('status').innerHTML = 'Welcome '+data.username;
});
}
catch(err)
{
document.getElementById('status').innerHTML = err.message;
}
}
</script>
<body>
<h1>WebSocket Client Demo</h1>
<div><p id="status">Enter user and password to Log-In</p></div>
<label>User :</label>
<input id="txtUser" type="text" maxlength="10" />
<label>Password :</label>
<input id="txtPass" type="text" maxlength="10" />
<button id="connect" onClick='connect()'/>Log-In</button>
</body>
</html>
WebSocket客户端演示[socket.io]
函数连接(){
尝试
{
var socket=io.connect('http://localhost:8124/');
socket.on(“连接”,函数(){
document.getElementById('status').innerHTML=“浏览器已连接到应用服务器”;
});
socket.on('login',函数(数据,document.getElementById('txtUser')。值,document.getElementById('txtPass')。值){
//警报(data.hello);
document.getElementById('status').innerHTML='Welcome'+data.username;
});
}
捕捉(错误)
{
document.getElementById('status').innerHTML=err.message;
}
}
WebSocket客户端演示
输入用户和密码以登录
用户:
密码:
登录
注:
我尝试了上面提到的代码,但没有成功。我试图用socket.send('abcd','ab12')从客户端向服务器发送用户名/密码。能够在服务器中发送但无法接收
请帮我解决这个问题。我正在使用MySQL数据库
作为更新,当我应用Joel的建议时,当我尝试在Node.js中运行app.js时,仍然会看到一个错误:
C:\Program Files (x86)\nodejs>node "C:\Program Files (x86)\nodejs\app.js" info - socket.io started
C:\Program Files (x86)\nodejs\app.js:6
var client = mysql.createConnection({
^ TypeError: Object #<Object> has no method 'createConnection'
at Object.<anonymous> (C:\Program Files (x86)\nodejs\app.js:6:24)
at Module._compile (module.js:449:26)
at Object..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function._load (module.js:312:12)
at module.js:487:10
at EventEmitter._tickCallback (node.js:238:9)
C:\Program Files (x86)\nodejs>
C:\ProgramFiles(x86)\nodejs>node“C:\ProgramFiles(x86)\nodejs\app.js”info-socket.io已启动
C:\ProgramFiles(x86)\nodejs\app.js:6
var client=mysql.createConnection({
^TypeError:对象#没有方法“createConnection”
at对象。(C:\ProgramFiles(x86)\nodejs\app.js:6:24)
在模块处编译(Module.js:449:26)
at Object..js(module.js:467:10)
在Module.load(Module.js:356:32)
at功能。加载(module.js:312:12)
在module.js:487:10
在EventEmitter上进行回调(node.js:238:9)
C:\ProgramFiles(x86)\nodejs>
这有什么问题吗?我刚刚修复了脚本,因为我需要类似的东西,给你: app.js:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
, mysql = require('mysql')
var client = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
});
client.connect();
app.listen(3232);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.on('login', function(usr, pass){
var TEST_DATABASE = 'mysqltest';
var TEST_TABLE = 'users';
client.query('USE '+TEST_DATABASE);
client.query('SELECT name FROM '+TEST_TABLE+' WHERE user = "'+usr+'" AND password = "'+pass+'"', function(err, results) {
if (err) throw err;
console.log(results[0]); // [{1: 1}]
socket.emit('retuLogIn',results[0]['name']);
});
});
socket.on('disconnect', function(){
console.log('Server has disconnected');
});
});
以及index.html:
<html>
<title>WebSocket Client Demo [socket.io]</title>
<script src="http://localhost:3232/socket.io/socket.io.js"></script>
<script>
function connect() {
try
{
var socket = io.connect('http://localhost:3232/');
socket.on("connect",function(){
document.getElementById('status').innerHTML ="Browser has connected to the app server";
socket.emit('login', document.getElementById('txtUser').value, document.getElementById('txtPass').value);
});
socket.on('retuLogIn', function (data) {
document.getElementById('status').innerHTML = 'Welcome '+data;
});
}
catch(err)
{
document.getElementById('status').innerHTML = err.message;
}
}
</script>
<body>
<h1>WebSocket Client Demo</h1>
<div><p id="status">Enter user and password to Log-In</p></div>
<label>User :</label>
<input id="txtUser" type="text" maxlength="10" />
<label>Password :</label>
<input id="txtPass" type="text" maxlength="10" />
<button id="connect" onClick='connect()'/>Log-In</button>
</body>
</html>
WebSocket客户端演示[socket.io]
函数连接(){
尝试
{
var socket=io.connect('http://localhost:3232/');
socket.on(“连接”,函数(){
document.getElementById('status').innerHTML=“浏览器已连接到应用服务器”;
emit('login',document.getElementById('txtUser').value,document.getElementById('txtPass').value);
});
socket.on('retuLogIn',函数(数据){
document.getElementById('status').innerHTML='Welcome'+数据;
});
}
捕捉(错误)
{
document.getElementById('status').innerHTML=err.message;
}
}
WebSocket客户端演示
输入用户和密码以登录
用户:
密码:
登录
您需要更改mysql数据库名称、用户名、密码等内容,如果需要,可能还需要更改端口
我使用了node.js、socket.io和node mysqlChandan-Dey,你找不到了
mysql = require('mysql')
在代码中,
干杯Joel,我尝试了你的代码,但没有成功。你能看看我错在哪里吗?我得到的错误是:C:\Program Files(x86)\nodejs>node“C:\Program Files(x86)\nodejs\app.js”info-socket.io启动了C:\Program Files(x86)\nodejs\app.js:6 var client=mysql.createConnection({^TypeError:Object#在Object上没有“createConnection”方法。(C:\Program Files(x86)\nodejs\app.js:6:24)在Module上。"在Object上编译(Module.js:449:26)在Module.load(Module.js:356:32)在Function上。"在EventEmitter上加载(Module.js:312:12)在Module.js:487:10。"回调(node.js:238:9)