我正在尝试将 Socket.io 与 Node.js 结合使用,并发送到路由逻辑内的套接字。
我有一个相当标准的 Express 3 设置,其中有一个位于路由中的 server.js 文件,然后我有一个位于路由文件夹中的 index.js,该文件夹导出站点的所有页面/可公开访问的功能。所以它们看起来像:
exports.index = function (req, res) {
res.render('index', {
title: "Awesome page"
});
};
在 server.js 中定义的路由如下:
app.get('/',routes.index);
我假设我必须在 server.js 中创建 socket.io 对象,因为它需要服务器对象,但如何访问该对象并从 index.js 导出函数向其发送?
现在 Express 4.0 有更好的方法来做到这一点。
您可以使用应用程序.set()存储对的引用io
object.
基本配置:
var app = require('express')();
var server = app.listen(process.env.PORT || 3000);
var io = require('socket.io')(server);
// next line is the money
app.set('socketio', io);
内部路由或中间件:
exports.foo = function(req,res){
// now use socket.io in your routes file
var io = req.app.get('socketio');
io.emit('hi!');
}
相关信息app.set()
and app.get()
在下面:
应用程序.set(名称,值)
将设置名称分配给值。您可以存储任何您想要的值,
但某些名称可用于配置服务器的行为。
这些特殊名称列在应用程序设置表.
Calling app.set('foo', true)
对于布尔属性来说是一样的
呼叫app.enable('foo')
。同样,调用app.set('foo', false)
对于布尔属性与调用相同app.disable('foo')
.
检索设置的值app.get()
.
来源:https://expressjs.com/en/api.html#app.set
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)