Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
李勇
/
McuClient
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
李勇
8 years ago
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5dec3a1ee6469bb33916eddf98ce44530ccd9c0f
5dec3a1e
1 parent
883fbee2
新增第三方消息广播消息通道
隐藏空白字符变更
内嵌
并排对比
正在显示
7 个修改的文件
包含
231 行增加
和
2 行删除
dist/McuClient.js
node_modules/ansi-regex/package.json
src/EngineEntrance.js
src/apes/ConferApe.js
src/apes/ThirdMessage.js
src/messenger.js
src/pdus/pro.js
dist/McuClient.js
查看文件 @
5dec3a1
此 diff 太大无法显示。
node_modules/ansi-regex/package.json
查看文件 @
5dec3a1
...
...
@@ -26,7 +26,7 @@
"spec"
:
">=2.0.0 <3.0.0"
,
"type"
:
"range"
},
"_
require
dBy"
:
[
"_
//this._emit
dBy"
:
[
"/strip-ansi"
],
"_resolved"
:
"http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.0.0.tgz"
,
...
...
src/EngineEntrance.js
查看文件 @
5dec3a1
...
...
@@ -17,6 +17,7 @@ import VideoApe from 'apes/VideoApe';
import
AudioApe
from
'apes/AudioApe'
;
import
DocApe
from
'apes/DocApe'
;
import
WhiteBoardApe
from
'apes/WhiteBoardApe'
;
import
ThirdMessage
from
'apes/ThirdMessage'
;
import
EngineUtils
from
"EngineUtils"
;
import
GlobalConfig
from
'GlobalConfig'
;
import
ApeConsts
from
'apes/ApeConsts'
;
...
...
@@ -28,7 +29,7 @@ import MediaModule from 'apes/MediaModule';
import
UTF8
from
'utf-8'
;
let
loger
=
Loger
.
getLoger
(
'McuClient'
);
let
_sdkInfo
=
{
"version"
:
"v1.2
8.0.20170503
1"
,
"author"
:
"www.3mang.com"
};
let
_sdkInfo
=
{
"version"
:
"v1.2
9.1.2017060
1"
,
"author"
:
"www.3mang.com"
};
//APE
let
_sass
;
...
...
@@ -41,6 +42,7 @@ let _audio_ape;
let
_doc_ape
;
let
_whiteboard_ape
;
let
_recordPlayback
;
let
_thirdMessage
;
//MCUClient 外部实例化主类
export
default
class
MessageEntrance
extends
Emiter
{
...
...
@@ -60,6 +62,9 @@ export default class MessageEntrance extends Emiter {
//全局的Error处理
this
.
on
(
MessageTypes
.
MCU_ERROR
,
this
.
_mcuErrorHandler
.
bind
(
this
));
//
_thirdMessage
=
new
ThirdMessage
();
// Sass平台层
_sass
=
Sass
;
_sass
.
on
(
'*'
,
(
type
,
data
)
=>
this
.
_emit
(
type
,
data
));
...
...
src/apes/ConferApe.js
查看文件 @
5dec3a1
...
...
@@ -45,6 +45,7 @@ class ConferApe extends Ape {
this
.
on
(
pdu
.
RCPDU_SEND_CONFERENCE_DATA_REQUEST
,
this
.
conferMsgComingHandler
.
bind
(
this
));
//这个是课堂消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理
this
.
on
(
pdu
.
RCPDU_CONFERENCE_RECORD_REQUEST
,
this
.
onSendConferRecordRequestHandler
.
bind
(
this
));
//发送录制和停止录制消息
this
.
on
(
pdu
.
RCPDU_THIRD_BROADCAST_DATA_REQUEST
,
this
.
onThirdBroadcastDataHandler
.
bind
(
this
));
//第三方广播消息
}
//加入课堂
...
...
@@ -633,6 +634,49 @@ class ConferApe extends Ape {
}
}
//-------------第三方消息------------------------------
//发送第三方广播消息
sendThirdBroadcastData
(
_param
){
loger
.
log
(
"发送第三方广播消息->"
,
_param
);
if
(
this
.
_classInfo
==
null
||
EngineUtils
.
isEmptyObject
(
this
.
_classInfo
))
{
loger
.
log
(
'发送第三方广播消息->失败->SDK还未初始化数据!'
);
if
(
GlobalConfig
.
getCurrentStatus
().
code
==
0
||
GlobalConfig
.
getCurrentStatus
().
code
==
1
)
{
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_SEND_FAILED_NO_JOIN
);
return
;
}
return
;
}
let
thirdBroadcastSendPdu
=
new
pdu
[
'RCThirdSendBroadcastDataRequestPdu'
];
thirdBroadcastSendPdu
.
type
=
pdu
.
RCPDU_THIRD_BROADCAST_DATA_REQUEST
;
thirdBroadcastSendPdu
.
initiator
=
this
.
_classInfo
.
nodeId
;
//发起人
thirdBroadcastSendPdu
.
peer
=
parseInt
(
_param
.
to
);
//发送给谁,公聊的时候是0,私聊的时候是指定的用户id
thirdBroadcastSendPdu
.
isPublic
=
true
;
thirdBroadcastSendPdu
.
message
=
this
.
_rCArrayBufferUtil
.
strToUint8Array
(
"h5"
+
_param
.
message
);
if
(
!
thirdBroadcastSendPdu
.
isPublic
&&
0
!=
thirdBroadcastSendPdu
.
peer
)
{
//发送给制定的人
this
.
send
(
thirdBroadcastSendPdu
);
}
else
{
//发送给所有人
this
.
sendChatUniform
(
thirdBroadcastSendPdu
);
}
}
//监听第三方消息通道消息
onThirdBroadcastDataHandler
(
_data
){
//loger.log("监听第三方消息通道消息->",_data);
var
thirdBroadcastReceivePdu
=
pdu
[
'RCThirdSendBroadcastDataRequestPdu'
].
decode
(
_data
);
var
thirdMessage
=
{};
thirdMessage
.
fromNodeID
=
thirdBroadcastReceivePdu
.
initiator
;
thirdMessage
.
toNodeID
=
thirdBroadcastReceivePdu
.
peer
;
thirdMessage
.
message
=
this
.
_rCArrayBufferUtil
.
uint8ArrayToStr
(
thirdBroadcastReceivePdu
.
userData
,
2
);
loger
.
log
(
"监听第三方消息通道消息->"
,
thirdMessage
);
}
//------------------第三方消息 end-----------------------------------------
onSendConferRecordRequestHandler
(
_data
)
{
try
{
let
conferRecordSendPdu
=
pdu
[
'RCConferenceRecordRequestPdu'
].
decode
(
_data
);
...
...
src/apes/ThirdMessage.js
0 → 100644
查看文件 @
5dec3a1
require
(
'messenger'
);
import
Emiter
from
'Emiter'
;
import
McuObj
from
'mcu'
;
import
Loger
from
'Loger'
;
let
loger
=
Loger
.
getLoger
(
'ThirdMessage'
);
class
ThirdMessage
extends
Emiter
{
constructor
(){
super
();
// 初始化消息通道
this
.
messenger
=
new
Messenger
(
'xuedianyunIframe'
,
'ParentMessengerChannel'
);
this
.
messenger
.
addTarget
(
window
.
parent
,
'parent'
);
this
.
messenger
.
listen
(
this
.
reciveThirdMessage
.
bind
(
this
))
loger
.
log
(
'ThirdMessage->'
);
}
//发送消息
sendMessage
(){
// 根据自己的业务组装对象
let
jsonObj
=
{
username
:
'sdk'
,
message
:
'sdk->hello world'
,
}
this
.
messenger
.
send
(
JSON
.
stringify
(
jsonObj
));
}
reciveThirdMessage
(
_data
){
loger
.
log
(
'来自父级页面的的消息:'
,
_data
);
// **发送前必须转JSON格式**
this
.
sendMessage
();
}
}
export
default
ThirdMessage
;
\ No newline at end of file
...
...
src/messenger.js
0 → 100644
查看文件 @
5dec3a1
/**
* __ ___
* / |/ /___ _____ _____ ___ ____ ____ _ ___ _____
* / /|_/ // _ \ / ___// ___// _ \ / __ \ / __ `// _ \ / ___/
* / / / // __/(__ )(__ )/ __// / / // /_/ // __// /
* /_/ /_/ \___//____//____/ \___//_/ /_/ \__, / \___//_/
* /____/
*
* @description MessengerJS, a common cross-document communicate solution.
* @author biqing kwok
* @version 2.0
* @license release under MIT license
*/
window
.
Messenger
=
(
function
()
{
// 消息前缀, 建议使用自己的项目名, 避免多项目之间的冲突
// !注意 消息前缀应使用字符串类型
var
prefix
=
"[PROJECT_NAME]"
,
supportPostMessage
=
'postMessage'
in
window
;
// Target 类, 消息对象
function
Target
(
target
,
name
,
prefix
)
{
var
errMsg
=
''
;
if
(
arguments
.
length
<
2
)
{
errMsg
=
'target error - target and name are both required'
;
}
else
if
(
typeof
target
!=
'object'
)
{
errMsg
=
'target error - target itself must be window object'
;
}
else
if
(
typeof
name
!=
'string'
)
{
errMsg
=
'target error - target name must be string type'
;
}
if
(
errMsg
)
{
throw
new
Error
(
errMsg
);
}
this
.
target
=
target
;
this
.
name
=
name
;
this
.
prefix
=
prefix
;
}
// 往 target 发送消息, 出于安全考虑, 发送消息会带上前缀
if
(
supportPostMessage
)
{
// IE8+ 以及现代浏览器支持
Target
.
prototype
.
send
=
function
(
msg
)
{
this
.
target
.
postMessage
(
this
.
prefix
+
'|'
+
this
.
name
+
'__Messenger__'
+
msg
,
'*'
);
};
}
else
{
// 兼容IE 6/7
Target
.
prototype
.
send
=
function
(
msg
)
{
var
targetFunc
=
window
.
navigator
[
this
.
prefix
+
this
.
name
];
if
(
typeof
targetFunc
==
'function'
)
{
targetFunc
(
this
.
prefix
+
msg
,
window
);
}
else
{
throw
new
Error
(
"target callback function is not defined"
);
}
};
}
// 信使类
// 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
// !注意: 父子页面中projectName必须保持一致, 否则无法匹配
function
Messenger
(
messengerName
,
projectName
)
{
this
.
targets
=
{};
this
.
name
=
messengerName
;
this
.
listenFunc
=
[];
this
.
prefix
=
projectName
||
prefix
;
this
.
initListen
();
}
// 添加一个消息对象
Messenger
.
prototype
.
addTarget
=
function
(
target
,
name
)
{
var
targetObj
=
new
Target
(
target
,
name
,
this
.
prefix
);
this
.
targets
[
name
]
=
targetObj
;
};
// 初始化消息监听
Messenger
.
prototype
.
initListen
=
function
()
{
var
self
=
this
;
var
generalCallback
=
function
(
msg
)
{
debugger
;
if
(
typeof
msg
==
'object'
&&
msg
.
data
)
{
msg
=
msg
.
data
;
}
var
msgPairs
=
msg
.
split
(
'__Messenger__'
);
var
msg
=
msgPairs
[
1
];
var
pairs
=
msgPairs
[
0
].
split
(
'|'
);
var
prefix
=
pairs
[
0
];
var
name
=
pairs
[
1
];
for
(
var
i
=
0
;
i
<
self
.
listenFunc
.
length
;
i
++
)
{
if
(
prefix
+
name
===
self
.
prefix
+
self
.
name
)
{
self
.
listenFunc
[
i
](
msg
);
}
}
};
if
(
supportPostMessage
)
{
if
(
'addEventListener'
in
document
)
{
window
.
addEventListener
(
'message'
,
generalCallback
,
false
);
}
else
if
(
'attachEvent'
in
document
)
{
window
.
attachEvent
(
'onmessage'
,
generalCallback
);
}
}
else
{
// 兼容IE 6/7
window
.
navigator
[
this
.
prefix
+
this
.
name
]
=
generalCallback
;
}
};
// 监听消息
Messenger
.
prototype
.
listen
=
function
(
callback
)
{
var
i
=
0
;
var
len
=
this
.
listenFunc
.
length
;
var
cbIsExist
=
false
;
for
(;
i
<
len
;
i
++
)
{
if
(
this
.
listenFunc
[
i
]
==
callback
)
{
cbIsExist
=
true
;
break
;
}
}
if
(
!
cbIsExist
)
{
this
.
listenFunc
.
push
(
callback
);
}
};
// 注销监听
Messenger
.
prototype
.
clear
=
function
()
{
this
.
listenFunc
=
[];
};
// 广播消息
Messenger
.
prototype
.
send
=
function
(
msg
)
{
var
targets
=
this
.
targets
,
target
;
for
(
target
in
targets
)
{
if
(
targets
.
hasOwnProperty
(
target
))
{
targets
[
target
].
send
(
msg
);
}
}
};
return
Messenger
;
})();
...
...
src/pdus/pro.js
查看文件 @
5dec3a1
...
...
@@ -704,6 +704,13 @@ message RCConferenceSendDataRequestPdu {
optional
uint32
action_type
=
5
;
//消息的指令类型
}
message
RCThirdSendBroadcastDataRequestPdu
{
optional
uint32
initiator
=
1
;
optional
uint32
peer
=
2
;
optional
bool
is_public
=
3
;
optional
bytes
message
=
4
;
}
message
RCChatSendDataRequestPdu
{
optional
uint32
initiator
=
1
;
optional
uint32
peer
=
2
;
...
...
请
注册
或
登录
后发表评论