最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Error: connect ETIMEDOUT - Stack Overflow

programmeradmin7浏览0评论

I am trying to work with Node and Mysql but i keep encountering error when trying to connect with the Database.

 //For mysql server
var mysql = require('mysql');

var connection = mysql.createConnection(
{
  host: 'example',
  user: 'abc',
  password: '***',
  database: 'abcd',
  port: 3306,
});
// If there is an error connecting to the database
connection.connect( function(err)
{
  if (err)
  { 
    throw err;
  }
  else 
  {
    console.log('DB connection establish');
  }
});

function check_userid(usersId)
{
var que = connection.query(
  'select * from table where id = '+usersId, function(err, result, fields){
  if(err) throw err;
  console.log('Resultset: ', result);
  console.log('Length of Resultset: ', result.length);

  if(result.length == 0)
  {
    connection.query('insert into table (id, user_status) values ( "' + usersId + '", "' + 'connected' + '")', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of table: ',result.insertId);
                    });
  }
  else
  {
    connection.query('update table SET user_status="'+'connected'+'" WHERE id = "' + usersId + '"', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of Table: ',result.insertId);
                    });
  }
  });

}
//For websocket
var webSocketServer = new (require('ws')).Server({port: (process.env.PORT || 5000)}),
webSockets = {} // userID: webSocket

// CONNECT /:userID
// wscat -c ws://localhost:5000/1
webSocketServer.on('connection', function (webSocket) 
{
  var userID = parseInt(webSocket.upgradeReq.url.substr(1), 10)
  webSockets[userID] = webSocket
                   console.log('connected: ' + userID + ' in ' + Object.getOwnPropertyNames(webSockets))

                   check_userid(userID);

                   // Forward Message
                   //
                   // Receive               Example
                   // [toUserID, text]      [2, "Hello, World!"]
                   //
                   // Send                  Example
                   // [fromUserID, text]    [1, "Hello, World!"]
                   webSocket.on('message', function(message) {
                                console.log('received from ' + userID + ': ' + message)
                                var messageArray = JSON.parse(message)
                                var toUserWebSocket = webSockets[messageArray[0]]
                                if (toUserWebSocket) {
                                console.log('sent to ' + messageArray[0] + ': ' + JSON.stringify(messageArray))
                                messageArray[0] = userID
                                toUserWebSocket.send(JSON.stringify(messageArray))
                                }
                                })

                   webSocket.on('close', function () {
                                delete webSockets[userID]
                                console.log('deleted: ' + userID)
                                connection.query('update table SET user_status="'+'disconnected'+'" WHERE id = "' + userID + '"', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of table: ',result.insertId);
                    });
                                })
                   })

And i keep getting the following Error

Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect as onplete
--------------------
at Handshake.Sequence (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)
at new Handshake (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
at Protocol.handshake (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/Protocol.js:44:50)
at Connection.connect (/Users/apple/Desktop/js/node_modules/mysql/lib/Connection.js:38:18)
at Object. (/Users/apple/Desktop/js/server.js:13:12)
at Module._pile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

Description: I run same server in localhost,and succesfully connected with phpMyadmin and I did not got that error but When I implement that server in VPS it cannot create connection with phpMyadmin and say connect ETIMEDOUT.

I am trying to work with Node and Mysql but i keep encountering error when trying to connect with the Database.

 //For mysql server
var mysql = require('mysql');

var connection = mysql.createConnection(
{
  host: 'example.',
  user: 'abc',
  password: '***',
  database: 'abcd',
  port: 3306,
});
// If there is an error connecting to the database
connection.connect( function(err)
{
  if (err)
  { 
    throw err;
  }
  else 
  {
    console.log('DB connection establish');
  }
});

function check_userid(usersId)
{
var que = connection.query(
  'select * from table where id = '+usersId, function(err, result, fields){
  if(err) throw err;
  console.log('Resultset: ', result);
  console.log('Length of Resultset: ', result.length);

  if(result.length == 0)
  {
    connection.query('insert into table (id, user_status) values ( "' + usersId + '", "' + 'connected' + '")', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of table: ',result.insertId);
                    });
  }
  else
  {
    connection.query('update table SET user_status="'+'connected'+'" WHERE id = "' + usersId + '"', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of Table: ',result.insertId);
                    });
  }
  });

}
//For websocket
var webSocketServer = new (require('ws')).Server({port: (process.env.PORT || 5000)}),
webSockets = {} // userID: webSocket

// CONNECT /:userID
// wscat -c ws://localhost:5000/1
webSocketServer.on('connection', function (webSocket) 
{
  var userID = parseInt(webSocket.upgradeReq.url.substr(1), 10)
  webSockets[userID] = webSocket
                   console.log('connected: ' + userID + ' in ' + Object.getOwnPropertyNames(webSockets))

                   check_userid(userID);

                   // Forward Message
                   //
                   // Receive               Example
                   // [toUserID, text]      [2, "Hello, World!"]
                   //
                   // Send                  Example
                   // [fromUserID, text]    [1, "Hello, World!"]
                   webSocket.on('message', function(message) {
                                console.log('received from ' + userID + ': ' + message)
                                var messageArray = JSON.parse(message)
                                var toUserWebSocket = webSockets[messageArray[0]]
                                if (toUserWebSocket) {
                                console.log('sent to ' + messageArray[0] + ': ' + JSON.stringify(messageArray))
                                messageArray[0] = userID
                                toUserWebSocket.send(JSON.stringify(messageArray))
                                }
                                })

                   webSocket.on('close', function () {
                                delete webSockets[userID]
                                console.log('deleted: ' + userID)
                                connection.query('update table SET user_status="'+'disconnected'+'" WHERE id = "' + userID + '"', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of table: ',result.insertId);
                    });
                                })
                   })

And i keep getting the following Error

Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect as onplete
--------------------
at Handshake.Sequence (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)
at new Handshake (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
at Protocol.handshake (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/Protocol.js:44:50)
at Connection.connect (/Users/apple/Desktop/js/node_modules/mysql/lib/Connection.js:38:18)
at Object. (/Users/apple/Desktop/js/server.js:13:12)
at Module._pile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

Description: I run same server in localhost,and succesfully connected with phpMyadmin and I did not got that error but When I implement that server in VPS it cannot create connection with phpMyadmin and say connect ETIMEDOUT.

Share Improve this question edited Jul 2, 2014 at 2:40 Isaac Bennetch 12.5k2 gold badges36 silver badges46 bronze badges asked Jun 30, 2014 at 12:25 Waleed AmjadWaleed Amjad 2881 gold badge4 silver badges12 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 1

This error occurred due to connect the server with Remote DataBase. If you want to connect your server with remotely database then make sure your remotely database provider have given the access of remote DB otherwise you need to install the mysql in you VPS.

Check your mysql server configuration. If you're executing this code on the same system as the mysql server, then mysql may not be configured to be listening on TCP port 3306 (it may just be listening on a unix socket).

If you're instead trying to connect from outside the system that the mysql server is running on, then not only may the mysql configuration not be set up to listen on the right network interface on port 3306, but there could be firewall rules you have to set up first in order to get to the mysql server.

发布评论

评论列表(0)

  1. 暂无评论