繁琐的连接事件没有在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连接,但是在可能不需要的地方会发生大量额外的开销。