簡體   English   中英

傳遞Socket.IO實例以路由文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM