Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117365298
D2203.1774816290.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
6 KB
Referenced Files
None
Subscribers
None
D2203.1774816290.diff
View Options
diff --git a/src/resources/js/meet/app.js b/src/resources/js/meet/app.js
--- a/src/resources/js/meet/app.js
+++ b/src/resources/js/meet/app.js
@@ -74,9 +74,22 @@
/**
* Join the room session
*
- * @param data Session metadata and event handlers (token, shareToken, nickname, role, connections,
- * chatElement, menuElement, onDestroy, onJoinRequest, onDismiss, onConnectionChange,
- * onSessionDataUpdate, onMediaSetup)
+ * @param data Session metadata and event handlers:
+ * token - OpenVidu token for the main connection,
+ * shareToken - OpenVidu token for screen-sharing connection,
+ * nickname - Participant name,
+ * role - connection (participant) role(s),
+ * connections - Optional metadata for other users connections (current state),
+ * chatElement - DOM element for the chat widget,
+ * menuElement - DOM element of the room toolbar,
+ * onSuccess - Callback for session connection (join) success
+ * onError - Callback for session connection (join) error
+ * onDestroy - Callback for session disconnection event,
+ * onDismiss - Callback for Dismiss action,
+ * onJoinRequest - Callback for join request,
+ * onConnectionChange - Callback for participant changes, e.g. role update,
+ * onSessionDataUpdate - Callback for current user connection update,
+ * onMediaSetup - Called when user clicks the Media setup button
*/
function joinRoom(data) {
resize();
@@ -198,6 +211,10 @@
// Connect with the token
session.connect(data.token, data.params)
.then(() => {
+ if (data.onSuccess) {
+ data.onSuccess()
+ }
+
let params = {
connectionId: session.connection.connectionId,
role: data.role,
@@ -227,6 +244,10 @@
})
.catch(error => {
console.error('There was an error connecting to the session: ', error.message);
+
+ if (data.onError) {
+ data.onError(error)
+ }
})
// Prepare the chat
diff --git a/src/resources/vue/Meet/Room.vue b/src/resources/vue/Meet/Room.vue
--- a/src/resources/vue/Meet/Room.vue
+++ b/src/resources/vue/Meet/Room.vue
@@ -226,13 +226,14 @@
roomState: 'init',
roomStateLabels: {
init: 'Checking the room...',
- 404: 'The room does not exist.',
323: 'The room is closed. Please, wait for the owner to start the session.',
324: 'The room is closed. It will be open for others after you join.',
325: 'The room is ready. Please, provide a valid password.',
326: 'The room is locked. Please, enter your name and try again.',
327: 'Waiting for permission to join the room.',
- 500: 'Failed to create a session. Server error.'
+ 404: 'The room does not exist.',
+ 429: 'Too many requests. Please, wait.',
+ 500: 'Failed to connect to the room. Server error.'
},
session: {}
}
@@ -322,7 +323,7 @@
this.roomState = error.response.status
}
- button.prop('disabled', this.roomState == 'init' || this.roomState == 327 || this.roomState == 404)
+ button.prop('disabled', this.roomState == 'init' || this.roomState == 327 || this.roomState >= 400)
if (data.config) {
this.session.config = data.config
@@ -359,6 +360,17 @@
// Update room state every 10 seconds
roomRequest = setTimeout(() => { this.initSession(true) }, 10000)
break;
+
+ case 429:
+ // Rate limited, wait and try again
+ const waitTime = error.response.headers['retry-after'] || 10
+ roomRequest = setTimeout(() => { this.initSession(init) }, waitTime * 1000)
+ break;
+
+ default:
+ if (this.roomState >= 400 && this.roomState != 404 && this.roomState != 422) {
+ this.roomState = 500
+ }
}
})
@@ -437,24 +449,28 @@
return
}
- if (this.roomState != 'ready') {
+ if (this.roomState != 'ready' && !this.session.token) {
this.initSession(true)
return
}
clearTimeout(roomRequest)
- $('#app').addClass('meet')
- $('#meet-setup').addClass('hidden')
- $('#meet-session-toolbar,#meet-session-layout').removeClass('hidden')
-
- if (!this.canShareScreen) {
- this.setMenuItem('screen', false, true)
- }
-
this.session.nickname = this.nickname
this.session.menuElement = $('#meet-session-menu')[0]
this.session.chatElement = $('#meet-chat')[0]
+ this.session.onSuccess = () => {
+ $('#app').addClass('meet')
+ $('#meet-setup').addClass('hidden')
+ $('#meet-session-toolbar,#meet-session-layout').removeClass('hidden')
+
+ if (!this.canShareScreen) {
+ this.setMenuItem('screen', false, true)
+ }
+ }
+ this.session.onError = () => {
+ this.roomState = 500
+ }
this.session.onDestroy = event => {
// TODO: Display different message for each reason: forceDisconnectByUser,
// forceDisconnectByServer, sessionClosedByServer?
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 29, 8:31 PM (1 w, 1 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
13/6a/d05d65b902ef1f071dfde6a1e996
Default Alt Text
D2203.1774816290.diff (6 KB)
Attached To
Mode
D2203: Meet: Improved error handling
Attached
Detach File
Event Timeline