[英]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.