oicq icon indicating copy to clipboard operation
oicq copied to clipboard

如何在nodejs开发中 禁止频繁登录

Open 320778963 opened this issue 2 years ago • 7 comments

Node.js Version

14

Package(oicq) Version

No response

Login Protocol

No response

Bug Description (最好截图说明,你的文字描述可能无法准确传达信息)

我在用nodejs来开发接收信息过滤 然后回复指定内容 当我nodejs文件更改后我需要重启服务器 如果重启服务器就会重新让机器人登录 有什么办法可以不让机器人重新登录

Log Details (控制台日志,请提供包含前后一段时间内的)

No response

320778963 avatar Jul 04 '22 07:07 320778963

require.cache 可以热重载模块

Cloud370 avatar Jul 04 '22 07:07 Cloud370

worker_threads 也可以热重载模块(

xueelf avatar Jul 04 '22 07:07 xueelf

worker_threads 也可以热重载模块(

require.cache 可以热重载模块

这些热重载模块 不会使得服务器重启吗

320778963 avatar Jul 04 '22 09:07 320778963

这是什么奇怪的问题,Client 也只是继承了 EventEmitter 实现的事件监听,你只是想实现插件热更新为什么要去停止整个服务?

插件本质上也只是一个从其它文件去 impoer 调用的方法,退一步来说,你需要保持方法在调用时是最新的状态,为什么要 kill 掉 client 实例或者整个 process 进程?这两者是完全没关联的

xueelf avatar Jul 04 '22 09:07 xueelf

你可以这样理解,需要重载的时候 只需要卸载掉旧的监听器或者是直接清除require的缓存,再重新require一次新的代码就可以做到

Cloud370 avatar Jul 04 '22 09:07 Cloud370

这是什么奇怪的问题,Client 也只是继承了 EventEmitter 实现的事件监听,你只是想实现插件热更新为什么要去停止整个服务?

插件本质上也只是一个从其它文件去 impoer 调用的方法,退一步来说,你需要保持方法在调用时是最新的状态,为什么要 kill 掉 client 实例或者整个 process 进程?这两者是完全没关联的

我将Client一起放进了node服务器中 我在开发node的时候 使用nodemon热重载 每当服务器重启就会重新创建实例 我在node语法中要使用Client实例进行一些操作 如果我不把他放进node服务器中 我不知道如何让node去获取Client实例 希望您能给些好的建议

320778963 avatar Jul 04 '22 09:07 320778963

这是什么奇怪的问题,Client 也只是继承了 EventEmitter 实现的事件监听,你只是想实现插件热更新为什么要去停止整个服务? 插件本质上也只是一个从其它文件去 impoer 调用的方法,退一步来说,你需要保持方法在调用时是最新的状态,为什么要 kill 掉 client 实例或者整个 process 进程?这两者是完全没关联的

我将Client一起放进了node服务器中 我在开发node的时候 使用nodemon热重载 每当服务器重启就会重新创建实例 我在node语法中要使用Client实例进行一些操作 如果我不把他放进node服务器中 我不知道如何让node去获取Client实例 希望您能给些好的建议

oicq 只是一个实现 qq 通信的协议库,nodemon 显然不符合你的实际需求...你用 nodemon 去启用服务会自动监听所有文件,只要有任何文件变化都会重启,你直接用 node index.js 去启用,将 Client 存入变量,使用 http 通信或者发送给 bot 的指令通过变量就能获取到。

再不济..你可以直接使用现有基于 oicq 的框架开发插件

xueelf avatar Jul 04 '22 09:07 xueelf