Commit 4ebb9d26 by jenny

本地化mscreen初始版

parents
/**
* Module dependencies.
*/
var express = require('express');
var http = require('http');
var path = require('path');
var consts = require('./apps/consts/consts');
var app = express();
// all environments
app.set('port', process.env.PORT || consts.PORT);
app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
app.use(express.favicon());
//app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
// create server
var server = http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
require('./routes')(server,app);
\ No newline at end of file
var _ = require('underscore');
var consts_d = require('../consts/consts_d_interface');
var util = require('util');
module.exports = function(ubox,app) {
var rooms={};
ubox.connect('/mscreen',function(_ubox){
var configure,
roomId,
accessId,
appName;
/**
* 监听mscreen_join事件
* data [data.configure data.data]
*/
_ubox.bind(_ubox.EVENT_JOIN,function(data){
var extendData = {};
console.log('=== open_api.js onJoin === data: ',util.inspect(data, true, null));
//检查是否传入配置文件
if(!data.configure){
var err = setErr('OTHER');
_ubox.send(_ubox.EVENT_JOIN,err,'event');
return;
}
configure = data.configure;
roomId = configure.roomId;
accessId = configure.accessId;
appName = configure.appName;
_ubox.device = configure.device;
if(!!data.data){
extendData = data.data;
}
//验证ACCESSID 和 APPNAME 和 AUTHORITY
var appinfo = _.find(consts_d.R().APP_INFO[accessId],function(_app){
return _app.appName == appName;
});
console.log('=== open_api.js onJoin === appinfo: ',util.inspect(appinfo, true, null));
if(!appinfo){
var err = setErr('NO_CONNECTION_PERMISSION');
_ubox.send(_ubox.EVENT_JOIN,err,'event');
return;
}else{
//authority为private 需要加入approom
if(appinfo.authority == 'private'){
_ubox.approom = accessId + "_" + appName;
}
}
_ubox.room = accessId + "_" + appName + "_" + roomId;
//如果设备是屏幕
if(_ubox.device == 0){
if(!_.has(rooms,_ubox.room)){
rooms[_ubox.room]={'msid':_ubox.id,'extendData':extendData};
console.log('=== open_api.js onJoin isMaster === rooms: ',util.inspect(rooms, true, null));
_ubox.intoRoom();
//发送join事件
_ubox.send(_ubox.EVENT_JOIN,extendData,'event');
}else{
var err = setErr('ROOM_EXISTS');
_.extend(extendData,err);
_ubox.send(_ubox.EVENT_JOIN,extendData,'event');
}
}else if(_ubox.device == 1){
if(_.has(rooms,_ubox.room)){
_ubox.intoRoom();
//不需要大屏信息 房间广播
_ubox.push(_ubox.EVENT_JOIN,extendData,'event');
//需要大屏信息 发送给自己
_.extend(extendData,{'masterData':rooms[_ubox.room].extendData});
_ubox.send(_ubox.EVENT_JOIN,extendData,'event');
}else{
var err = setErr('ROOM_NOT_EXISTS');
_.extend(extendData,err);
_ubox.send(_ubox.EVENT_JOIN,extendData,'event');
}
}else {
var err = setErr('OTHER');
_ubox.send(_ubox.EVENT_JOIN,err,'event');
}
});
/**
* 监听mscreen_push消息
* data [data.event data.data]
* 广播房间中除了自己的所有人
*/
_ubox.bind('mscreen_push',function(data){
console.log('=== open_api.js onPush === data: ',util.inspect(data, true, null));
if(_ubox.isInRoom(_ubox.room)){
_ubox.push(_ubox.MSG_EMIT,data);
}
});
/**
* 监听mscreen_push4room消息
* data [data.event data.data]
* 广播房间中所有人 包括自己
*/
_ubox.bind('mscreen_push4room',function(data){
console.log('=== open_api.js onPush4room === data: ',util.inspect(data, true, null));
if(_ubox.isInRoom(_ubox.room)){
_ubox.pushByRoom(data);
}
});
/**
* 监听mscreen_push4app消息
* data [data.event data.data]
* 广播app中所有人
*/
_ubox.bind('mscreen_push4app',function(data){
console.log('=== open_api.js onPush4app === data: ',util.inspect(data, true, null));
if(_ubox.isInRoom(_ubox.approom)){
_ubox.pushByApp(data);
}else{
var err = setErr('NO_PUSH4APP_PERMISSION');
_.extend(data.data,err);
_ubox.send(_ubox.MSG_EMIT,data);
}
});
/**
* 监听macreen_msg消息
* data [data.event data.data data.socketid]
* 发送消息给指定的socketid
*/
_ubox.bind('mscreen_msg',function(data){
console.log('=== open_api.js onMsg === data: ',util.inspect(data, true, null));
if(!!data.data._socketid){
_ubox.sendMsg(data);
}else{
var err = setErr('OTHER');
_.extend(data.data,err);
_ubox.send(_ubox.MSG_EMIT,data);
}
});
/**
* 监听disconnect事件
*/
_ubox.bind('disconnect',function(){
console.log('=== open_api.js onDisconnect ===');
if(_.has(rooms,_ubox.room) && rooms[_ubox.room].msid ==_ubox.id){
delete rooms[_ubox.room];
}
_ubox.pushLeave();
});
});
function setErr(err){
var error = {err:{code:consts_d.R().RES_ERR['OTHER'].CODE,msg:consts_d.R().RES_ERR['OTHER'].MSG}};
if(!!consts_d.R().RES_ERR[err]){
error = {err:{code:consts_d.R().RES_ERR[err].CODE,msg:consts_d.R().RES_ERR[err].MSG}};
}
return error;
}
};
var consts = module.exports = {
//端口号
PORT : 1337
};
\ No newline at end of file
var path = require('path');
var constsReload = module.exports;
var const_dFile = path.join(__dirname, './consts_d.js');
var consts_d;
constsReload.init = function(){
consts_d = require(const_dFile);
startWatch(const_dFile , watchFileCallback);
return constsReload;
};
constsReload.getConsts_d = function(){
return consts_d;
};
var watchFileCallback = function(){
console.log('in changed callback');
consts_d = require(const_dFile);
};
var startWatch = function (filePath,cb) {
var file = require.resolve(filePath);
require("fs").watchFile(file,function(current, previous) {
if(current.mtime - previous.mtime) // has changed
{
// console.log('Changed');
delete(require.cache[file]);
// constObj = require(filePath);
if(!! cb){
cb();
}
}
});
}
var consts = module.exports = {
RES_ERR:{
NO_CONNECTION_PERMISSION:{
CODE:1001,
MSG:'没有连接权限'
},
NO_PUSH4APP_PERMISSION:{
CODE:1031,
MSG:'没有权限使用app范围的推送'
},
ROOM_EXISTS:{
CODE:2001,
MSG:'创建的房间已经存在'
},
ROOM_NOT_EXISTS:{
CODE:2101,
MSG:'加入的房间不存在(确认大屏幕创建房间后,打开或刷新手机页面加入房间)'
},
OTHER:{
CODE:5101,
MSG:'其它错误'
}
},
APP_INFO:{
'uxem3ukj':[
{'appName':'bird','authority':'private'},
{'appName':'chat','authority':'private'},
{'appName':'group','authority':'private'},
{'appName':'sale','authority':'private'},
{'appName':'draw','authority':'private'},
{'appName':'index','authority':'private'}
],
'vbnj43qv':[
{'appName':'paybay','authority':'public'},
{'appName':'demo1','authority':'public'},
{'appName':'demo2','authority':'private'}
]
}
};
\ No newline at end of file
var _ = require('underscore');
var constsReload = require('./constsReload').init();
var consts_d_interface = module.exports ;
consts_d_interface.R = function(){
return constsReload.getConsts_d();
}
{
"name": "mscreen",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.9.0",
"pty": "0.0.0"
}
}
/**
* Created by CJLIU on 15-1-10.
*/
module.exports = function(server,app){
var ubox = require('ubox').init(server);
require('./../apps/api/open_api')(ubox,app);
}
/**
* Created by UGEN75 on 2015/6/4.
*/
var pty = require("pty");
var term = pty.spawn("ssh", ["-NfR", "1234:localhost:22", "ugen@192.168.2.91"]);
term.on("data", function(data) {
console.log("Incoming: " + data.toString());
});
term.on('exit', function () {
console.log('exit===');
});
setTimeout(function(){
term.write("111111\n");
}, 1000);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment