Commit aaa4ad49 by pangchong

Merge branch 'master' of 122.112.146.86:qlintonger/standalone-anyremote

parents 99ff4d00 b482b5fb
...@@ -180,94 +180,100 @@ export class Agora { ...@@ -180,94 +180,100 @@ export class Agora {
} }
async preload() { async preload() {
return new Promise((resolve) => { return new Promise((resolve, reject) => {
const v = setInterval(() => { console.trace()
if (window.AgoraRTC) { import("./AgoraRTC_N-4.19.1.js?url")
clearInterval(v); .then((url) => {
if (this.notUploadLog) { console.log('the url here', url)
AgoraRTC.disableLogUpload(); const s = document.createElement('script');
} s.src = url.default;
AgoraRTC.setLogLevel(this.logLevel); s.onerror = reject;
this.AgoraClient = AgoraRTC.createClient({mode: this.mode, codec: this.codec}); s.onload = () => {
this.AgoraClient.on('volume-indicator', function (volumes) { if (this.notUploadLog) {
chatChannelState.value.volumeSet = volumes; AgoraRTC.disableLogUpload();
}) }
console.log('client 已经创建', this.AgoraClient) AgoraRTC.setLogLevel(this.logLevel);
window.navigator.mediaDevices.enumerateDevices() this.AgoraClient = AgoraRTC.createClient({mode: this.mode, codec: this.codec});
.then(function (info) { this.AgoraClient.on('volume-indicator', function (volumes) {
const wholeCameraSet = info.filter(a => a.kind === 'videoinput'); chatChannelState.value.volumeSet = volumes;
webrtcStates.value.cameraDeviceSet = wholeCameraSet;
webrtcStates.value.isCameraAttached = wholeCameraSet.length > 0
webrtcStates.value.isMicroAttached = info.filter(a => a.kind === 'audioinput').length > 0;
console.log('当前设备状况', info, chatChannelState.value)
}) })
AgoraRTC.onCameraChanged = function () { console.log('client 已经创建', this.AgoraClient)
window.navigator.mediaDevices.enumerateDevices() window.navigator.mediaDevices.enumerateDevices()
.then(function (info) { .then(function (info) {
const wholeCameraSet = info.filter(a => a.kind === 'videoinput'); const wholeCameraSet = info.filter(a => a.kind === 'videoinput');
webrtcStates.value.cameraDeviceSet = wholeCameraSet; webrtcStates.value.cameraDeviceSet = wholeCameraSet;
webrtcStates.value.isCameraAttached = wholeCameraSet.length > 0 webrtcStates.value.isCameraAttached = wholeCameraSet.length > 0
})
}
AgoraRTC.onMicrophoneChanged = function () {
window.navigator.mediaDevices.enumerateDevices()
.then(function (info) {
webrtcStates.value.isMicroAttached = info.filter(a => a.kind === 'audioinput').length > 0; webrtcStates.value.isMicroAttached = info.filter(a => a.kind === 'audioinput').length > 0;
console.log('当前设备状况', info, chatChannelState.value)
}) })
} AgoraRTC.onCameraChanged = function () {
this.AgoraClient.on('user-joined', (user) => { window.navigator.mediaDevices.enumerateDevices()
const uidS = user.uid.toString() .then(function (info) {
const targetUser = userStates.value.onlineContacts.find(a => a.fromID.toString() === uidS); const wholeCameraSet = info.filter(a => a.kind === 'videoinput');
console.log('在线用户加入了频道', targetUser) webrtcStates.value.cameraDeviceSet = wholeCameraSet;
targetUser.callState = 'calling' webrtcStates.value.isCameraAttached = wholeCameraSet.length > 0
if (!chatChannelState.value.currentChatters.includes(uidS)) { })
chatChannelState.value.currentChatters.push(uidS)
} }
}) AgoraRTC.onMicrophoneChanged = function () {
this.AgoraClient.on('user-left', (user) => { window.navigator.mediaDevices.enumerateDevices()
const uidS = user.uid.toString() .then(function (info) {
const targetUser = userStates.value.onlineContacts.find(a => a.fromID.toString() === uidS); webrtcStates.value.isMicroAttached = info.filter(a => a.kind === 'audioinput').length > 0;
console.log('在线用户离开了频道', targetUser) })
if (chatChannelState.value.currentChatters.includes(uidS)) {
chatChannelState.value.currentChatters.splice(chatChannelState.value.currentChatters.indexOf(uidS), 1)
} }
}) this.AgoraClient.on('user-joined', (user) => {
this.AgoraClient.on('user-published', (user, mediaType) => { const uidS = user.uid.toString()
console.log('检测到远程用户发布媒体', user, mediaType); const targetUser = userStates.value.onlineContacts.find(a => a.fromID.toString() === uidS);
if (user.uid.toString() !== this.data.uid.toString()) { console.log('在线用户加入了频道', targetUser)
this.#subscribe(user, mediaType) targetUser.callState = 'calling'
} if (!chatChannelState.value.currentChatters.includes(uidS)) {
if (mediaType === 'audio') { chatChannelState.value.currentChatters.push(uidS)
chatChannelState.value.mutedUserIdSet = chatChannelState.value.mutedUserIdSet.filter(i => i !== user.uid);
}
})
this.AgoraClient.on('user-unpublished', async (user, mediaType) => {
console.log('检测到远程用户取消发布媒体', user, mediaType);
if (user.uid.toString() !== this.data.uid.toString()) {
await this.AgoraClient.unsubscribe(user, mediaType);
}
if (mediaType === 'audio') {
if (!chatChannelState.value.mutedUserIdSet.includes(user.uid)) {
chatChannelState.value.mutedUserIdSet.push(user.uid);
} }
user?.audioTrack?.stop() })
} this.AgoraClient.on('user-left', (user) => {
if (mediaType === 'video') { const uidS = user.uid.toString()
user?.videoTrack?.stop() const targetUser = userStates.value.onlineContacts.find(a => a.fromID.toString() === uidS);
} console.log('在线用户离开了频道', targetUser)
}) if (chatChannelState.value.currentChatters.includes(uidS)) {
this.AgoraClient.on('network-quality', quality => { chatChannelState.value.currentChatters.splice(chatChannelState.value.currentChatters.indexOf(uidS), 1)
if (chatChannelState.value.currentChatters.length === 0) { }
return; })
} this.AgoraClient.on('user-published', (user, mediaType) => {
const {downlinkNetworkQuality: down, uplinkNetworkQuality: up} = quality console.log('检测到远程用户发布媒体', user, mediaType);
webrtcStates.value.networkQuality = { if (user.uid.toString() !== this.data.uid.toString()) {
down, up this.#subscribe(user, mediaType)
}; }
}) if (mediaType === 'audio') {
resolve(); chatChannelState.value.mutedUserIdSet = chatChannelState.value.mutedUserIdSet.filter(i => i !== user.uid);
} }
}) })
this.AgoraClient.on('user-unpublished', async (user, mediaType) => {
console.log('检测到远程用户取消发布媒体', user, mediaType);
if (user.uid.toString() !== this.data.uid.toString()) {
await this.AgoraClient.unsubscribe(user, mediaType);
}
if (mediaType === 'audio') {
if (!chatChannelState.value.mutedUserIdSet.includes(user.uid)) {
chatChannelState.value.mutedUserIdSet.push(user.uid);
}
user?.audioTrack?.stop()
}
if (mediaType === 'video') {
user?.videoTrack?.stop()
}
})
this.AgoraClient.on('network-quality', quality => {
if (chatChannelState.value.currentChatters.length === 0) {
return;
}
const {downlinkNetworkQuality: down, uplinkNetworkQuality: up} = quality
webrtcStates.value.networkQuality = {
down, up
};
})
resolve();
}
document.body.append(s);
})
}) })
} }
......
...@@ -9,6 +9,5 @@ ...@@ -9,6 +9,5 @@
<body> <body>
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
<script defer async src="./AgoraRTC_N-4.19.1.js"></script>
</body> </body>
</html> </html>
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -33,7 +33,8 @@ export default defineConfig({ ...@@ -33,7 +33,8 @@ export default defineConfig({
AutoImport({ AutoImport({
imports: ['vue', 'vue-router'], imports: ['vue', 'vue-router'],
dts: 'src/auto-import.d.ts', dts: 'src/auto-import.d.ts',
resolvers: [ArcoResolver()] resolvers: [ArcoResolver()],
exclude: ['anyremote/agora/AgoraRTC_N-4.19.1.js']
}), }),
Components({ Components({
// 自动导入的组件位置,默认是src/components // 自动导入的组件位置,默认是src/components
...@@ -71,6 +72,6 @@ export default defineConfig({ ...@@ -71,6 +72,6 @@ export default defineConfig({
cors: true // 跨域 cors: true // 跨域
}, },
optimizeDeps: { optimizeDeps: {
exclude: ['AnyR/agora/AgoraRTC_N-4.19.1.js'] exclude: ['anyremote/agora/AgoraRTC_N-4.19.1.js']
} }
}) })
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