【问题标题】:socket io splitting functions into different filessocket io 将函数拆分为不同的文件
【发布时间】:2015-07-21 11:41:23
【问题描述】:

我已经习惯了 node.js 中路由的工作方式,但是让我给你一个 socket.io 节点服务器的典型示例:

    /**
 * Created by root on 3/13/15.
 */
var multer = require('multer');
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var cookieParser = require('socket.io-cookie-parser');
var moment = require('moment');
var mysql = require('mysql');
var users = [];
var message = "";
io.use(cookieParser());

io.on('connection', function (socket) {

    var userDetails = {};


    /*
    Connection (after login)
     */
    socket.on('userData', function (userDetails) {
        users[userDetails.id] = socket;
        userDetails = 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;
    });
});


http.listen(8105, function () {
    console.log('listening on *:8105');
});

这很好用。但是,当需要扩展和创建多种功能(例如聊天和流式传输)时,此文件可能会变得非常长且难以维护。

所以我的问题是如何将套接字连接拆分为不同的文件,甚至可能吗?

我在这里寻找的是一些最佳实践用法,很高兴有一些例子。

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

    试试下面的代码:

    socketio.on('connection', function (socket) {
      // ...
    
      socket.on('isOnline', function (user_id) {
        require('user-online.js').register(socket, user_id);
      });
    
      socket.on('sendNotification', function (args) {
        require('notification/handler.js').handler(socket, args);
      });
    
      // ...  
    });
    

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2018-02-20
      • 1970-01-01
      • 2020-01-21
      • 2021-07-09
      相关资源
      最近更新 更多