最后,我成功地使用了socket.io命名空间,这是我用来构建聊天模块的工具。在这里,多个组织的员工可以与相应组织的其他员工一起加入和使用虚拟软件。我在这里要做的是为每个组织创建单独的名称空间。所以,对我来说,管理不同组织的所有员工会更容易。
以下是我的服务器端代码:
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。对有线命名方案很抱歉。但是,有一件事是,我现在觉得我做这段代码的方式不是很好。因为在为每个组织创建命名空间时,我正在复制代码。有人能建议一个更好的方法来安排这个代码吗?
发布于 2014-12-21 07:50:01
将公共逻辑提取到函数中,其中变化的部分是参数。除非我错过了什么,否则这件事似乎很容易做到:
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);如果不需要保留这些变量,那么可以删除这些变量,只需保留调用:
setup_namespace(1005);
setup_namespace(1010);https://codereview.stackexchange.com/questions/74375
复制相似问题