gpt4 book ai didi

node.js - socketTimeoutMS 在非常简单的环境中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:37 29 4
gpt4 key购买 nike

我正在开发一个应用程序。 MongoDB 服务器托管在远程主机上。因此,我非常热衷于使用 socketTimeoutMS: 30000 来确保抛出错误 - 并且我可以在我的应用程序中记录问题。

我尝试使用 URL,将 MONGO_URL 设置为 mongodb://localhost/ddd18?socketTimeoutMS=4000'

或者使用选项:

require('mongodb').MongoClient.connect( process.env.MONGO_URL, { server: { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } } , function( err, db ){

或者:

require('mongodb').MongoClient.connect( process.env.MONGO_URL, { mongos: { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } } , function( err, db ){

或选项中的其他组合(例如直接 { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } 甚至 { socketTimeoutMS: 6500, connectTimeoutMS: 6500 })。

如果我执行以下操作:

  • 运行我的应用程序(可以很好地连接到 MongoDB)
  • 完全杀死 MongoDB
  • 尝试执行操作

该尝试将永远挂起。实际上,它会卡在那里,然后当我最终重新启动 MongoDB 时,操作将真正开始并完成。

我遇到的问题是我的客户端有 30 秒超时。如果服务器不这样做,并且由于某种原因它静默了几分钟,那么客户端报告为“失败”的所有这些操作实际上都会发生 - 这将是愚蠢的。

我做错了什么吗?

相关文档:http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html

最佳答案

答案很简单:套接字没有超时。 auto_reconnect 被设置为 true,并且服务器继续尝试重新连接 - 并且没有给出错误

关于node.js - socketTimeoutMS 在非常简单的环境中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26199751/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com