Socket.io – 在node.js的单独文件中监听事件

比如我的想法是:

File1.js

io.sockets.on('connection', function (socket) { socket.on('file1Event', function () { //logic }); }); 

File2.js

  io.sockets.on('connection', function (socket) { socket.on('file2Event', function () { //logic }); }); 

这个代码是针对一个节点服务器的,这个代码我会有问题吗?

不,只是使用相同的“io”对象。

File1.js

 exports = module.exports = function(io){ io.sockets.on('connection', function (socket) { socket.on('file1Event', function () { console.log('file1Event triggered'); }); }); } 

File2.js

 exports = module.exports = function(io){ io.sockets.on('connection', function (socket) { socket.on('file2Event', function () { console.log('file2Event triggered'); }); }); } 

app.js

 var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') , file1 = require('./File1')(io) , file2 = require('./File2')(io) app.listen(3000); function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } 

的index.html

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.emit('file1Event'); // 'file1Event triggered' will be shown socket.emit('file2Event'); // 'file2Event triggered' will be shown </script>