使用socket.io通过套接字连接到mysql数据库时出错

贝基

我试图连接到节点内的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个问题

  1. 您的数据库服务器拒绝连接
  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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用休眠连接到数据库时出错

使用 socket_io_client 库在颤振结束时未建立套接字连接

使用SSH Tunel时无法通过套接字错误连接到本地MySQL服务器

使用 powershell 脚本连接到 Oracle 数据库。连接时出错

使用aiosqlite python库连接到数据库时出错

使用JSP在tomcat服务器中连接到Oracle数据库时出错

使用标准Web套接字客户端连接到Socket.io服务器

如何使用socket.io访问mysql数据库

如何使用连接到套接字的socket.id发送多个客户端(Node.js,Socket.io)

用R连接到socket.io套接字

在打字稿上使用 socket.io 创建套接字服务器时出错

关于使用socket,io在webrtc中进行套接字连接

连接到数据库连接时使用Spotfire函数

在Windows上使用Python通过SSH连接数据库时出错

如何通过Symfony 4连接到使用MAMP创建的mySQL数据库?

如何使用Play Framework通过SSL连接到远程MySQL数据库?

使用存储的凭据通过dplyr连接到MySQL数据库

Node JS&Socket.io建议-通过路由或通过套接字将信息发布到数据库是否更好?

使用 socket.io 创建多个套接字时的 ENOBUFS

使用RubyMine通过Vagrant连接到数据库

使用MySQL Workbench连接到Azure MySQL数据库

我可以使用什么来唯一标识使用Socket.IO连接到套接字的设备吗?

尝试使用Eclipse连接到MySql数据库时Ping失败

使用JDBC连接到MySQL数据库时出现问题

使用mysql.connector for python连接数据库时出错

使用Paho Javascript库无法通过SSL Web套接字连接到远程MQTT代理

socket.io - 客户端通过同一服务器连接到两个套接字

使用mysqldriver连接数据库时出错

使用PHP连接数据库时出错