0

J'ai développé un script Node.js pour me connecter à une base de données MySQL en utilisant socket.io. Cependant, lorsque j'essaie de me connecter au serveur à l'aide de mon application client Titanium, je passe juste la méthode de connexion que j'ai créée; il n'y a aucun message d'erreur ou message d'aucune sorte, et le socket se ferme juste sans appeler le script. Quelqu'un comprend-il quel pourrait être mon problème? Pour la référence, mon code est:Script Node.js pour se connecter à la base de données MySQL via socket.io

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; 
      } 
     }); 
    }; 

Si quelqu'un pouvait me dire où je me trompe avec ce code, il serait grandement apprécié. Je vous remercie.

Cordialement

Le Gyro capitaine


Comme je l'ai mentionné précédemment, je continue à travailler sur ce script en utilisant nœud-mysql-libmysqlclient, mais j'avons rencontré quelques difficultés à réellement se connecter à le serveur. Mon script de connexion est attaché ici:

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 
} 

Cependant, je ne peux accéder à aucun code défini après la connexion. Si quelqu'un pouvait me dire où je me trompe, j'apprécierais beaucoup. Pour l'enregistrement, j'utilise le code de test pour node-mysql-libmysqlclient ici: https://github.com/Sannis/node-mysql-libmysqlclient/blob/master/tests/complex/test-call-stored-procedure.js. Merci.

Cordialement

Le Gyro capitaine

+0

Espérons que cela aidera http://nodejs.org/ – Prasanth

+0

Merci. J'ai déjà jeté un oeil sur le site de Node.js et j'ai décidé d'arrêter d'utiliser le paquet node-mysql en faveur du paquet node-mysql-libmysqlclient. –

Répondre

1

Voici ma tentative de votre problème en utilisant node-mysqlclient, il se connecte à la DB et retire tout dans une table sélectionnée, il écrit une chaîne factice à la prise . Vous pouvez également regarder socket.io ... vous l'avez mentionné dans votre question, mais il n'a pas été utilisé dans cette application.

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); 

~

Questions connexes