gpt4 book ai didi

node.js - Socket.io 从 nodejs Controller 发出,我做得对吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:15 25 4
gpt4 key购买 nike

我是 Nodejs 新手,现在需要将 socket.io 集成到应用程序中。

基本上它是一个电子商务应用程序,我需要在管理屏幕中自动显示订单,因此我使用 socket.io 发出最新订单的 json。

经过更多搜索,我终于集成了一个简单的解决方案,即全局声明 io 变量并在 Controller 内使用它。

一个或多个客户端将连接到具有特定 ID 的套接字,并且我将向该事件发出如下输出。

server.js

var http = require('http').Server(app)
var io = require('socket.io')(http)
global._io = io

controller.js

exports.socketServer = (req,res) => {
global._io.emit('groupid', "json_data")
})

因此,当从该模块插入新订单时,我会将 json 发送给与套接字连接的用户。

这够公平吗?使用上述代码的最佳实践是什么以及有哪些缺点。

我看到很少有帖子说将 io 作为属性传递,但我无法理解,所以如果有人能解释我如何传递它,我真的很感激。

谢谢

-维杰

最佳答案

通常不鼓励使用 global 对象,因为它可能会导致命名冲突。例如,您require的模块也可以设置global._io,将您的_io发送到垃圾收集器。

但是,对于小型应用程序来说,如果您使用相对较少的模块,那么这是一个完全可行的解决方案。

在模块之间共享变量的推荐方法是将其放入 exports 对象中:

服务器.js

var http = require('http').Server(app)
var io = require('socket.io')(http)
exports.io = io;

Controller .js

exports.socketServer = (req,res) => {
require("server.js").io.emit('groupid', "json_data")
})

关于node.js - Socket.io 从 nodejs Controller 发出,我做得对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103110/

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