[英]Passing a Socket.IO instance to route files
我希望與我的快速路由文件共享一個socket.io實例。
我以前在一個路由文件中有socket.io偵聽orders.js
,端口5200
上有orders.js
,而在端口5000
上有Express Server偵聽app.js
,但是我的雲服務要求我為這兩個都使用一個端口,所以我確實搬了他們都到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)
./routes/index
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)
我得到{}
試試這個
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.