我正在尝试将Socket.io与Node.js结合使用,并在路由逻辑内发送到套接字。
我有一个相当标准的Express 3安装程序,其中的server.js文件位于该路由中,然后我的index.js位于一个routes文件夹中,该文件夹导出站点的所有页面/公共可访问功能。因此,它们看起来像:
exports.index = function (req, res) { res.render('index', { title: "Awesome page" }); };
在server.js中定义的路由如下:
app.get('/',routes.index);
我假设我必须在server.js中创建socket.io对象,因为它需要服务器对象,但是我该如何访问该对象并从index.js导出函数发出该对象呢?
您可以将路由文件设置为一个函数,并在需要该文件时传递Socket.IO对象。
module.exports = function(io) { var routes = {}; routes.index = function (req, res) { io.sockets.emit('payload'); res.render('index', { title: "Awesome page" }); }; return routes; };
然后要求这样的路线:
var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io').listen(server); var routes = require('./routes')(io);