我试图连接到节点内的mysql数据库,并且每次添加新记录时都想创建一个套接字(使用socket.io),但是出现以下错误。
错误:在TCPConnectWrap.afterConnect上连接ECONNREFUSED 139.0.0.1:3306 [完成时](node:net:1133:16)
我是socket.io的新手,因此正在尝试在线示例中的代码以了解其工作原理。
这是我的代码
const app = require('http').createServer().listen(8000);
const mysql = require('mysql');
const io = require('socket.io')(app);
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'ExampleLogin'
});
db.connect((err) => {
if(err) console.log(err);
console.log("Connected Successfully To The Database");
});
//db.connect();
console.log('Server running on port 8000');
const prev_id = 0;
io.sockets.on('connection', (socket) => {
socket.emit('greeting', 'Hello');
socket.on('check_podcast', (data) => {
const uid = data['uid'];
const query = "SELECT * FROM podcastTable WHERE id =" +uid;
connection.query(query, (err, rows, fields) => {
if (err) throw err;
if(rows[0].id > prev_id) {
socket.emit('new_podcast', rows[0]);
prev_id = rows[0].id;
}
});
});
db.end();
});
当我运行代码时,在终端中得到以下输出
我可以看到2个问题
首先,请检查您的MySQL凭据是否正确,MySQL是否正在运行,是否允许您的用户从指定的主机名进行连接?
然后上述问题解决后,下一个问题是“ connection.query”,
io.sockets.on('connection', (socket){
在上面的实时“连接”中是一个事件,它与MySQL查询无关。
您的查询应该是
db.query(query, (err, rows, fields) => {
'db'对象保存MySQL的连接信息。
这是服务器端和客户端的完整工作代码
// server.js
const HTTP = require('http');
const mysql = require('mysql');
server = HTTP.createServer();
var io = require('socket.io')(server,{
pingInterval: 5000,
pingTimeout: 2500,
cookie: false
});
server.listen(8080);
var MySQLConnection = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
MySQLConnection.connect(function(err) {
if (err) {
console.log('MySQL COnnection Error --> ' + err);
}
else{
console.log("MySQL Connected Successfully");
}
});
io.on('connection',function(socket){
socket.emit('greeting', 'Hello');
socket.on('checkUser', (data) => {
const email = data['email'];
const query = "SELECT * FROM table1 WHERE email ='" +email+"'";
MySQLConnection.query(query, (err, result, fields) => {
if (err) {
console.log('MySQL Query Error --> '+ err);
}
else{
console.log(result);
}
});
});
});
这是客户
<!-- client.html -->
<script src="http://SERVERIP:8080/socket.io/socket.io.js"></script>
<script>
var socket = io('http://SERVERIP:8080', {
transports: [ 'websocket' ],
'reconnection': true,
'reconnectionDelay': 500,
'reconnectionDelayMax': 1000,
'reconnectionAttempts': 100
});
socket.on('connect', onConnect);
socket.on('greeting', onGreeting);
function onConnect(){
console.log('Connected Successully...');
}
function onGreeting(DATA){
console.log('onGreeting --> DATA --> ' + DATA);
var sendData = {
email: '[email protected]'
}
socket.emit('checkUser',sendData);
}
</script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句