Socket.io创建一个单独的事件处理程序文件

时间:2016-06-26 15:53:01

标签: javascript socket.io

我已经创建了一个套接字连接,目前我正在寻找清理并使一切井井有条。

以下是我当前文件结构FILE STRUCTURE

的图片

所以我想要做的就是

socket.on("send message", function(data){
    io.sockets.emit("new message", data);
});

并将其放在名为socketEvents.js的文件中,该文件位于main - > JS。

但是我不能100%确定如何在成功连接时包含该文件。 我尝试过使用像require()这样的东西;但无济于事。是否有标准方法包含单独的文件来运行事件?或者这不是好的做法?

编辑:

这是一个jsfiddle只是为了让所有代码可用:https://jsfiddle.net/7qya7j18/

1 个答案:

答案 0 :(得分:1)

您可以将所有socket.io代码移动到另一个模块,并在初始化时将其传递给服务器。如果您通过文本(不是通过图像)将代码包含在您的问题中,那么这个答案会更容易编写,所以请将来再这样做。

主要模块:

var express = require("express"),
    app = express(),
    server = require("http").createServer(app);

server.listen(3000, function() {
    console.log("Server is running");
});

app.use(express.static("main"));

// now load and initialize my socket.io module
require('./mysockets')(server);

mySockets模块:

var io = require("socket.io");

// declare module constructor that is passed the http server to bind to
module.exports = function(server) {
     io.listen(server);

     io.on("connection", function(socket) {
         // player has connected
         console.log("Player connected");

         socket.on("disconnect", function() {
             console.log("Player disconnected");
         });

         socket.on("send message", function(data) {
             io.emit("new message", data);
         });
     });
};