【发布时间】:2015-05-21 23:50:10
【问题描述】:
假设你有一个这样的server.js:
io.on('connection', function (socket) {
var userDetails = {};
/*
Connection (after login)
*/
socket.on('userData', function (userDetails) {
users[userDetails.id] = socket;
userDetails = userDetails;
require('user-online.js').register(socket, userDetails);
});
//Notification
socket.on('sendNotification', function (users, notification) {
users.forEach(function (y) {
if(users[y] != null){
users[y].emit(notification);
}
})
});
socket.emit('newNotification', 'hell');
socket.emit('someEvent', 'hello world');
socket.on('browserClose', function (msg) {
console.log('this user has disconnect: ' + userDetails.username);
users[userDetails.id] = null;
});
//check connection / status of other sockets:
socket.on('isOnline', function(user_id){
socket.emit('userStatus', users[user_id] != null);
});
socket.on('setMyLocation', function(location){
users[userDetails.id].location = location;
});
});
我不会费心把上面所有的东西放在它连接的地方,因为它与我的问题无关。
我的问题基本上是当添加更多代码时这个 server.js 文件会变得非常混乱。我想将我的套接字任务拆分为不同的 javascript 文件。但是我不确定它们是如何工作的,而且我似乎在任何地方都找不到任何这样的例子。
我的想法是为以下任务配备一个处理程序:
- 通知
- 聊天
- 上传/下载文件
谁能把我推向正确的方向,或者有人有一些文档吗?
【问题讨论】:
-
这是一个很好的描述如何使用“模块”sitepoint.com/understanding-module-exports-exports-node-js。模块将允许您将代码放入另一个文件中,然后您可以
require(module_name)它来访问导出的变量。
标签: javascript node.js sockets socket.io