gpt4 book ai didi

mysql - Node.js脚本通过socket.io连接MySQL数据库

转载 作者:行者123 更新时间:2023-11-29 14:43:57 34 4
gpt4 key购买 nike

我开发了一个 Node.js 脚本来使用 socket.io 连接到 MySQL 数据库。但是,当我尝试使用 Titanium 客户端应用程序连接到服务器时,它只会传递我创建的连接方法;没有错误消息或任何类型的消息,并且套接字只是关闭而不调用脚本。有谁明白我的问题可能是什么。作为引用,我的代码是:

    var app = require('net')
, fs = require('fs')
, Client = require('mysql').Client
, client = new Client();

client.user = 'user';
client.password = 'password'; // Obviously this is not my real password

var sockets_list = [];

var server = app.createServer(function (socket) {
sockets_list.push(socket);
socket.write("Hello Client\r\n");

socket.on('data', function(data) {
console.log(data);
for (var i = 0; i < sockets_list.length; i++) {
sockets_list[i].write(data);
}


});

client.connect(function(err, results) {
if (err) {
console.log("ERROR: " + err.message);
socket.write("NO!\r\n");
throw err;
}
console.log("connected.");
socket.write("Got through here\r\n");
clientConnected(client);
});

socket.on('end', function() {
var i = sockets_list.indexOf(socket);
sockets_list.splice(i, 1);
});


});



server.listen(8080);

clientConnected = function(client)
{
client.query('USE db', function(err, results) {
if (err) {
console.log("ERROR: " + err.message);
throw err;
}
});
};

如果有人能告诉我这段代码哪里出了问题,我将不胜感激。谢谢。

问候

陀螺船长

<小时/>

正如我之前提到的,我继续使用 node-mysql-libmysqlclient 处理这个脚本,但在实际连接到服务器时遇到了一些困难。我的连接脚本附在这里:

exports.CallStoredProcedureSync = function (test) {
test.expect(12);

var conn;
var result;
var row;
var rows;
var host = "localhost";
var user = "test";
var password = **********;
var database = *******;

var sockets_list = [];
conn = mysql.createConnectionSync();
conn.connectSync(host, user, password, database, 0, 0, conn.CLIENT_MULTI_RESULTS);

if (!conn.connectedSync())
{
sys.puts("Connection error " + conn.connectErrno + ": " + conn.connectError);
socket.write("Connection error " + conn.connectErrno + ": " + conn.connectError);
process.exit(1);
}
// More code here
}

但是,我实际上无法访问连接后定义的任何代码。如果有人能告诉我哪里出了问题,我将不胜感激。作为记录,我在这里使用 node-mysql-libmysqlclient 的测试代码:https://github.com/Sannis/node-mysql-libmysqlclient/blob/master/tests/complex/test-call-stored-procedure.js 。谢谢。

问候

陀螺船长

最佳答案

这是我使用node-mysqlclient解决您的问题的尝试,它连接到数据库并拉回所选表中的所有内容,然后将虚拟字符串写入套接字。您可能还想查看socket.io ...您在问题中提到了它,但此应用程序中未使用它。

var app = require('net')
, mysql = require('mysql-libmysqlclient')
, conn = mysql.createConnectionSync();


conn.connectSync('localhost', 'user', 'password', 'database');
conn.setCharsetSync('utf8');

var sockets_list = [];

var server = app.createServer(function (socket) {
sockets_list.push(socket);
socket.write("Hello Client\r\n");

socket.on('data', function(data) {
console.log(data);
for (var i = 0; i < sockets_list.length; i++) {
sockets_list[i].write(data);
}
});

clientConnected = function() {
conn.query('SELECT * FROM table', function(err, results) {
if (err)
throw err;
else {
results.fetchAll(function (err, rows) {
if (err)
throw err;
// print out database info
console.log(rows);
socket.write('socket writes here');
});
}
});
};

clientConnected();

socket.on('end', function() {
var i = sockets_list.indexOf(socket);
sockets_list.splice(i, 1);
});
});

server.listen(8080);

~

关于mysql - Node.js脚本通过socket.io连接MySQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7383548/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com