簡體   English   中英

初學者對Express和socket.io中的模塊結構感到困惑

[英]Beginner confused about module structure in Express and socket.io

所有:

我是Node.js的新手,當我學習將Socket.io集成到Express.js中時,有一個關於模塊化的問題讓我如此困惑:

我使用默認的 Express.js項目結構,主要的js文件涉及到我的困惑是:

app.js:定義請求處理程序並使用module.exports = app; 作為一個模塊。

bin / www: require app.js,設置和配置http服務器。

一切看起來模塊化都很棒。

但是當談到Socket.io集成時,這種結構開始讓我困惑:

來自Socket.io文檔:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(80);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

由於socket.io需要服務器變量,所以我發現這個代碼應該在www文件中,但是我也想將io事件處理部分模塊化為模塊,但我不知道如何將io變量導出到www,因為它需要一個來自www的可變服務器。

我想知道:這是否意味着我必須將所有socketio事件處理代碼保存在www文件中? 誰能給我一些代碼來展示如何模塊化這個?

PS:感謝你過去並給予了一次投票,這證明這是一個入門級問題或者毫無價值,但是,請用你的投票留下你的答案,因為這對像我這樣的入門級初學者來說非常重要。

謝謝

套接字代碼的組織不一定是直觀的,但你可以認為它類似於事物的http方面以及通常為路由提供函數的方式。

請注意,您只是為“io.on”提供了一個功能。 所以,你可以做這樣的事情。 在單獨的文件中為您的套接字函數創建一個模塊......

// File named socket_funcs.js
module.exports.connection = function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
    console.log(data);
});

然后在你的app.js文件中你可以這樣做......

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var sf = require('./socket_funcs.js');

server.listen(80);

app.get('/', function (req, res) {
    res.sendfile(__dirname + '/index.html');
});

io.on('connection', sf.connection);

我沒有投票給你的問題。 這對初學者來說似乎是一個恰當的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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