我是nodejs的新手,现在需要将socket.io集成到应用程序中。
基本上,它是一个电子商务应用程序,我需要在管理屏幕上自动显示订单,所以我使用socket.io来发出最新订单的json。
经过更多的搜索,我终于集成了一个简单的解决方案,即全局声明io变量并在控制器中使用它。
一个或多个客户端将连接到具有特定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作为属性,我无法理解,所以如果有人能解释我如何通过它,我真的很感激。
感谢
-Vijay
通常不鼓励使用global
对象,因为它可能会导致命名冲突。例如,require
的模块也可以设置global._io
,将_io
发送到垃圾收集器。
然而,对于小型应用程序来说,如果你使用的模块数量相对较少,这是一个完全可行的解决方案。
建议在模块之间共享变量的方法是将其放入exports
对象:
server.js
var http = require('http').Server(app)
var io = require('socket.io')(http)
exports.io = io;
控制器.js
exports.socketServer = (req,res) => {
require("server.js").io.emit('groupid', "json_data")
})