相关疑难解决方法(0)

在expressjs路由中使用socket.io而不是在main server.js文件中

我有表达/ nodejs api.我正在添加socket.io功能.目前我的所有路由都在单独的文件夹中,我将它们包含在server.js文件中,并将它们用作app.use()函数.

在server.js文件中,我还通过监听特定端口(如3000)启动快速服务器.

let server = app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

根据所有谷歌搜索,我发现我需要传递服务器变量来初始化socket.io,如下所示.

let io = require('socket.io')(server);
Run Code Online (Sandbox Code Playgroud)

现在的问题是,因为它需要这个变量,那么如何在我的路径文件中使用socket.io,这些文件位于不同的文件夹中以从客户端发出和接收事件?

UPDATE

在server.js文件中

let route = require('./routes/route');

let app = express();

let server = app.listen(3000);

console.log('Listening to port');

let io = require('socket.io')(server);

app.use('/api/1.0/events', route(io));
Run Code Online (Sandbox Code Playgroud)

在route.js文件中

let express = require('express');

module.exports = (io) => {
    console.log('IO: ', io);
};
Run Code Online (Sandbox Code Playgroud)

更新2

server.js文件

let express = require('express');
let events = require('./routes/events');
let app = express();
let server = app.listen(3000);

let io = require('socket.io')(server);


app.use(function(request, response, next) {
    request.io = io; …
Run Code Online (Sandbox Code Playgroud)

javascript sockets node.js express

10
推荐指数
3
解决办法
6347
查看次数

标签 统计

express ×1

javascript ×1

node.js ×1

sockets ×1