2016-06-26 12 views
0

Ich habe eine Socket-Verbindung erstellt, und im Moment versuche ich nur aufzuräumen und alles gut organisiert.Socket.io erstellen eine separate Event-Handler-Datei

Hier ist ein Bild von meiner aktuellen Dateistruktur FILE STRUCTURE

Also, was ich will, es zu tun nehmen ist

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

und legen in der gerufenen socketEvents.js-Datei, die in Haupt befindet - -> js.

Ich bin jedoch nicht 100% sicher, wie Sie diese Datei bei erfolgreicher Verbindung einbinden können. Ich habe versucht, etwas wie require() zu verwenden; aber ohne Erfolg. Gibt es eine Standardmethode zum Einbeziehen einer separaten Datei zum Ausführen von Ereignissen? Oder ist es keine gute Übung?

EDIT:

ist hier ein jsfiddle nur den gesamten Code zur Verfügung zu haben: https://jsfiddle.net/7qya7j18/

Antwort

1

Sie können nur verschieben Sie alle Ihre socket.io Code in ein anderes Modul und es nur bei der Initialisierung den Server übergeben. Diese Antwort wäre viel einfacher zu schreiben gewesen, wenn Sie Ihren Code in Ihre Frage per Text eingefügt hätten (nicht über ein Bild), also tun Sie das bitte in der Zukunft.

Hauptmodul:

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 Modul:

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); 
     }); 
    }); 
}; 
+0

Ich sehe, was Sie tun. Gibt es einen Grund, dass Sie nicht Ihre Anforderung ('./ MySockets') (Server) aufrufen müssen; ein .js? Wie ich eine 404 zu finden finde meine Datei namens socketEvents.js –

+0

@factor_za - require() wird automatisch .js hinzufügen, aber ein 404 klingt wie das, was der Browser als Fehler sieht, kein Serverfehler so jetzt Sie Ton verwirrt. – jfriend00

+0

Ja. Es ist ein Browserfehler. Nicht Serverseite. Es hat Mühe, die Datei zu finden. Aber mit app.use (express.static ('main')); Ich würde denken, dass mit require ('js/socketEvents') (Server), um zum js-Ordner zu gelangen, wo die socketEvents-Datei gefunden wird, funktionieren würde. Es scheint jedoch, dass der Browser nicht in der Lage ist, die Datei zu finden. Aber die Anforderung funktioniert. –

Verwandte Themen