我是nodej的新手,现在需要将www.example.com集成socket.io到应用程序中。
基本上这是一个电子商务应用程序,我需要在管理屏幕上显示订单自动,所以我使用socket.io发出最新订单的json。
经过更多的搜索,我最终集成了一个简单的解决方案,即全局声明io变量并在控制器中使用它。
一个或多个客户端将连接到具有特定ID的套接字,我将向该事件发出如下输出。
服务器.js
var http = require('http').Server(app)
var io = require('socket.io')(http)
global._io = io
控制器.js
exports.socketServer = (req,res) => {
global._io.emit('groupid', "json_data")
})
因此,当从这个模块插入新订单时,我会将json发送给与套接字连接的用户。
这是否足够公平!?使用上述代码的最佳实践是什么,所有的缺点是什么。
我看到一些帖子声明要传递io作为属性,我不能理解,所以我真的很感激,如果有人可以解释我如何通过它。
谢谢
- 维杰
1条答案
按热度按时间ggazkfy81#
通常不建议使用
global
对象,因为它可能会导致命名冲突。例如,一个您使用require
的模块可能也会设置global._io
,从而将您的_io
发送到垃圾收集器。然而,对于小型应用程序,如果使用相对较少的模块,这是一个完全可行的解决方案。
在模块之间共享变量的推荐方法是将其放入
exports
对象中:server.js
controller.js