2016-03-13 2 views
1

Я пытаюсь подключиться к локальной базе данных SQL Server, используя Tedious в узле js.Tedious on connect event not firing in function

function connectToSql() { 
    sqlConnection.on('connect', function (err) { 
     // If no error, then good to go... 
     if (err) { 
      console.log(err); 
     } else { 
      console.log('connected to SQL!'); 
      executeSelectStatement(); 
     } 
    }); 
} 

Когда я вызываю эту функцию вскоре после ее объявления, ее рабочий тон и печать «подключены к SQL!». Но когда я вызываю это событие «соединение» SocketIO.Server, это не делает вызов sql. Мой код, как показано ниже:

ioServer.on('connection', function (socket: SocketIO.Socket) { 
    console.log('a user connected'); 
    connectToSql(); 
}); 

это только печатает «пользователь подключен»

Любые предложения, почему это происходит?

ответ

1

Скорее всего, соединение SQL уже установлено до того, как произойдет соединение Socket.io. В этом случае событие connect, вероятно, уже произошло.

Если вы хотите установить соединение SQL после получения соединения Socket.io, вам, вероятно, необходимо в это время указать new Connection(config);, а также подписаться на событие connect.

Обратите внимание, что вы, вероятно, не хотите устанавливать SQL-соединение для каждого подключения Socket.io, как и для нескольких людей, использующих приложение, при этом много дополнительных накладных расходов происходит там, где это, вероятно, не требуется.

+0

Reily, откуда вызывается вызов для SQL-соединения? Поскольку вызов соединения SQL находится внутри функции, и функция вызывается только в соединении socket.io, как она может быть уже подключена? –

+0

В соединении Socket.io вы привязываетесь к событию SQL 'connect', а не подключаетесь к SQL. Привязка к этому событию сообщит вам, когда соединение установлено с SQL, что, вероятно, задолго до соединения Socket.io –