首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天模块的套接字命名空间

聊天模块的套接字命名空间
EN

Code Review用户
提问于 2014-12-21 07:31:47
回答 1查看 761关注 0票数 4

最后,我成功地使用了socket.io命名空间,这是我用来构建聊天模块的工具。在这里,多个组织的员工可以与相应组织的其他员工一起加入和使用虚拟软件。我在这里要做的是为每个组织创建单独的名称空间。所以,对我来说,管理不同组织的所有员工会更容易。

以下是我的服务器端代码:

代码语言:javascript
复制
var express = require('express'),   
http = require('http'),
app = express(),
server = http.createServer(app),
io = require('socket.io').listen(server);


var nsp_1005 = io.of('/nsp_bucket_1005');
nsp_1005.on('connection', function(socket){
    console.log('someone connected to namespace bucket 1005');

    socket.on('addEmp', function(login_org_id, login_emp_id, login_emp_name){ 
        console.log('addEmp - Org_Id : '+login_org_id);
        console.log('addEmp - Emp_Id : '+login_emp_id);
        console.log('addEmp - Emp_Name : '+login_emp_name);     
    });

    socket.on('disconnect', function(){ 
        console.log('Someone disconnected from namespace bucket 1005.');
    });
});

var nsp_1010 = io.of('/nsp_bucket_1010');
nsp_1010.on('connection', function(socket){
    console.log('someone connected to namespace bucket 1010');  

    socket.on('addEmp', function(login_org_id, login_emp_id, login_emp_name){ 
        console.log('addEmp - Org_Id : '+login_org_id);
        console.log('addEmp - Emp_Id : '+login_emp_id);
        console.log('addEmp - Emp_Name : '+login_emp_name);     
    });

    socket.on('disconnect', function(){ 
        console.log('Someone disconnected from namespace bucket 1010.');
    });
});

这1005,1010码是组织ID。对有线命名方案很抱歉。但是,有一件事是,我现在觉得我做这段代码的方式不是很好。因为在为每个组织创建命名空间时,我正在复制代码。有人能建议一个更好的方法来安排这个代码吗?

EN

回答 1

Code Review用户

回答已采纳

发布于 2014-12-21 07:50:01

将公共逻辑提取到函数中,其中变化的部分是参数。除非我错过了什么,否则这件事似乎很容易做到:

代码语言:javascript
复制
function setup_namespace(org_id) {
    var nsp = io.of('/nsp_bucket_' + org_id);
    nsp.on('connection', function(socket){
        console.log('someone connected to namespace bucket ' + org_id);

        socket.on('addEmp', function(login_org_id, login_emp_id, login_emp_name){ 
            console.log('addEmp - Org_Id : ' + login_org_id);
            console.log('addEmp - Emp_Id : ' + login_emp_id);
            console.log('addEmp - Emp_Name : ' + login_emp_name);     
        });

        socket.on('disconnect', function() { 
            console.log('Someone disconnected from namespace bucket ' + org_id);
        });
    });
    return nsp;
}

var nsp_1005 = setup_namespace(1005);
var nsp_1010 = setup_namespace(1010);

如果不需要保留这些变量,那么可以删除这些变量,只需保留调用:

代码语言:javascript
复制
setup_namespace(1005);
setup_namespace(1010);
票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/74375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档