【问题标题】:How to separate Socket.IO events from server.js?如何将 Socket.IO 事件与 server.js 分开?
【发布时间】:2021-01-03 20:37:19
【问题描述】:

我创建了 Express、Node、React 应用程序。

现在,我想将 socket.io 集成到应用程序中。

我搜索了整个互联网,发现所有 socket.io 事件都在初始 server.js/app.js 文件中。

但是,我想将 socket.io 事件与主文件分开,然后将其导入主文件,就像路由/控制器文件一样。

我现在的代码:

var app = require("express")();
var http = require("http").createServer(app);
var io = require("socket.io")(http);
const mongoose = require("mongoose");
const stocks = require("./routes/stockRoutes");
const bodyParser = require("body-parser");
const cors = require("cors");

const port = 5000;

app.use(stocks);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.set("socketio", io);

const uri =
  "mongodb+srv://admin:admin1234@investockcluster0.jp2wh.mongodb.net/<stocks_data>?retryWrites=true&w=majority";

mongoose.connect(uri, {
  useNewUrlParser: true,
  useCreateIndex: true,
  useUnifiedTopology: true,
});
const connection = mongoose.connection;
connection.once("open", () => {
  console.log("MongoDB database connection established successfully");
});

 io.on("connection", (socket) => {
   socket.emit("hello", "world");
   console.log("New Connection");
});

http.listen(port, () => {
  console.log(`Server is running on port: ${port}`);
});

我希望此代码位于“socketEvents.js”之类的文件中,然后需要它。

io.on("connection", (socket) => {
       socket.emit("hello", "world");
       console.log("New Connection");
    });

非常感谢:)

【问题讨论】:

    标签: node.js express websocket socket.io


    【解决方案1】:

    只需将你的 socket.io 代码放在另一个模块中,并以初始化方法传入服务器:

    // in sock.js
    module.exports = function(server) {
    
        const io = require("socket.io")(server);
        io.on("connection", (socket) => {
           socket.emit("hello", "world");
           console.log("New Connection");
        });
    
        // put other things that use io here
    }    
    

    然后,在你的主文件中:

    require('./sock.js')(http);
    

    仅供参考,http 是您服务器的一个糟糕的变量名称。你真的应该把它命名为server

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      相关资源
      最近更新 更多