我希望与我的快速路由文件共享一个socket.io实例。
我以前在一个路由文件中将socket.io侦听器放置在端口orders.js
上的5200
中,而快递服务器在端口app.js
上的5000
中侦听了,但是我的云服务需要我为两个端口都使用一个端口,因此我确实将它们都移动到了app.js
。下面的代码已大大简化以消除噪声
./ app.js
const port = process.env.PORT || 8000;
const socket = require('socket.io');
const server = app.listen(port, () => console.log(`[!] Listening on
port: ${chalk.green(port)}`))
const io = module.exports = socket(server);
app.use(express.json());
app.use(cors());
app.use('/', router)
./路线/索引
const express = require('express');
const router = express.Router();
router.use('/orders', require('./orders'));
module.exports = router;
./ routes / orders.js
const express = require('express');
const router = express.Router();
const io = require('../index');
io.on('connection', (client) => {
console.log("CLIENT CONNECTED");
})
router.get(... etc etc
我希望获得一个连接控制台,但是却收到一个错误消息,即IO不是功能。当我console.log(io)
时我得到{}
答案 0 :(得分:0)
尝试这种方式
const user = require('{SET FILE PATH}');
io.on('connection', function (socket) {
console.log('Socket connected...', socket.id);
socket.on('login', function (req) {
user.login(socket, req, 'login'); // socketObj , req , methodName
})
});
user.js
class User {
login(socket, req, methodName) {
console.log("Socket ref is ::: " , socket);
}
}
module.exports = new User();