一尘不染

在快速路由文件中使用socket.io

node.js

我正在尝试将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导出函数发出该对象呢?


阅读 331

收藏
2020-07-07

共1个答案

一尘不染

您可以将路由文件设置为一个函数,并在需要该文件时传递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);
2020-07-07