2016-06-26 4 views
0

У меня есть сокет-соединение, и на данный момент я ищу просто очистить и сделать все хорошо организованным.Socket.io создает отдельный файл обработчика событий

Вот образ моей текущей файловой структуры FILE STRUCTURE

Так что я хочу сделать, это принять

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

и поместить его в файл под названием socketEvents.js, который расположен в главном - -> js.

Однако я не уверен на 100% о том, как включить этот файл в успешное соединение. Я пробовал использовать что-то вроде require(); но безрезультатно. Существует ли стандартный способ включения отдельного файла для запуска событий? Или это не хорошая практика?

EDIT:

Вот jsfiddle только иметь весь код в наличии: https://jsfiddle.net/7qya7j18/

ответ

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

Я вижу, что вы делаете. Есть ли какая-либо причина, по которой вам не нужно называть ваш запрос («./ mysockets») (сервер); a .js? Как я могу получить 404 на поиск моего файла socketEvents.js –

+0

@factor_za - require() будет автоматически добавлять .js, но 404 звучит так, как будто браузер видит ошибку am, а не ошибку сервера, поэтому теперь вы звук путать. – jfriend00

+0

Да. Это ошибка браузера. Не серверная сторона. Он пытается найти файл. Но с помощью app.use (express.static ('main')); Я бы подумал, что использование require ('js/socketEvents') (сервера) для доступа к папке js, где находится файл socketEvents, будет работать. Однако, кажется, что наш мастер не может найти файл. Но требование действительно работает. –

Смежные вопросы