繁琐的连接事件没有在function上发射

我正尝试使用Tedious在节点js中连接到本地SQL Server数据库。

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

它只打印“一个用户连接”

有什么build议,为什么会这样呢?

在Socket.io连接发生之前,SQL连接可能已经build立。 既然如此, connect事件可能已经发生。

如果您只想在接收到Socket.io连接后build立SQL连接,则可能需要new Connection(config); 在那个时候还要订阅connect事件。

请注意,您可能不希望为使用该应用程序的多个人build立每个Socket.io连接的SQL连接,但是在可能不需要的地方会发生大量额外的开销。