Compare commits

...

3507 Commits

Author SHA1 Message Date
Carlos Santos f92ee9b886 ov-components: Improve prejoin card styles 2025-08-21 13:08:31 +02:00
Carlos Santos 68d855a245 ov-components: Enhanced camera track handling and processor application in virtual background service 2025-08-21 13:08:31 +02:00
Carlos Santos 72e7469012 ov-components: Enhanced prejoin component
- Introduced background effect feature with options for 'none', 'blur', 'office', and 'nature'.
- Enhanced error handling during device initialization with retry logic and user feedback.
- Updated participant name handling to trim whitespace and clear errors on input change.

style(audio-devices): refactor audio device selection UI

- Redesigned audio device selection to use buttons instead of dropdowns for better UX.
- Improved styling for audio toggle button and device selection menu.

style(video-devices): refactor video device selection UI

- Updated video device selection to use buttons for toggling camera and selecting devices.
- Enhanced styling for video toggle button and device selection menu.

style(lang-selector): improve language selection UI

- Redesigned language selector for better usability with compact and full versions.
- Enhanced styling for language selection buttons and menu items.

style(participant-name-input): refactor participant name input field

- Updated participant name input to use a custom styled input field instead of mat-form-field.
- Improved styling for input field and error handling.

style: general UI improvements across components

- Enhanced overall styling for better consistency and user experience across various components.
2025-08-21 13:08:31 +02:00
cruizba 622a2f6707 openvidu-deployment: Change MinIO and Mimir images to use OpenVidu registry instead of bitnami. 2025-08-20 22:38:37 +02:00
Carlos Santos 72697bafa5 ov-components:Enhance logging by adding verbose level and updating log calls in TemplateManagerService 2025-08-19 11:25:56 +02:00
Carlos Santos 4fb4878342 ov-components: Refactor LoggerService to improve logger function creation and cache handling 2025-08-19 10:50:13 +02:00
Carlos Santos 57e76fe69b ov-components: Update participant name handling in Session and Toolbar components 2025-08-18 18:28:13 +02:00
Carlos Santos e1f16a6179 ov-components: Update MATERIAL_ICONS_URL to remove unnecessary icon names 2025-08-18 14:28:20 +02:00
Carlos Santos 9e9684c4db ov-components: Update RecordingActivityComponent to avoid showing recordings when not expanded 2025-08-18 14:00:16 +02:00
Carlos Santos efada4c166 ov-components: (test) Add check for speaker element when local participant is muted 2025-08-14 12:54:30 +02:00
Carlos Santos 3fc0193260 Revert "ov-components: (test) Enhance element counting method to handle timeouts gracefully"
This reverts commit 61a3589dd7.
2025-08-14 12:53:31 +02:00
Carlos Santos 61a3589dd7 ov-components: (test) Enhance element counting method to handle timeouts gracefully 2025-08-14 12:43:10 +02:00
Carlos Santos 8d1c2468f5 ov-components: Refactor VideoconferenceComponent to use private properties for external structural directives, enhancing encapsulation and template setup 2025-08-14 12:16:54 +02:00
Carlos Santos 020413257f ov-components: Implement toolbar room name directive and update toolbar to display room name dynamically 2025-08-13 12:49:03 +02:00
Carlos Santos 6c78abdcc0 ov-components: Remove unnecessary mic button interaction in stream UI tests 2025-08-11 14:17:36 +02:00
Carlos Santos e31a78d153 ov-components: refactor(storage): Enhance tab management and cleanup mechanisms in StorageService 2025-08-11 13:57:23 +02:00
Carlos Santos b1d0269211 ov-components: Add participant badges directive for enhanced participant panel functionality 2025-08-05 17:39:29 +02:00
Carlos Santos 00fcb0b115 ov-components: Revamp participant panel item for improved UI/UX and accessibility; add mute/unmute functionality and translations 2025-08-05 16:35:20 +02:00
Carlos Santos 4bf351b2df ov-components: Add layout additional elements directive for customizable UI extensions 2025-07-31 13:50:47 +02:00
Carlos Santos e9ecceeb77 ov-components: Add participant panel directive for enhanced user experience 2025-07-30 19:37:40 +02:00
Carlos Santos 413dec3e0f ov-components: Close connection dialog on room disconnection event 2025-07-30 12:38:09 +02:00
Carlos Santos 414c26c31b ov-components: Enhance recording status messages with improved styling and structure for starting and stopping states 2025-07-30 12:26:19 +02:00
Carlos Santos fce026766b ov-components: Enhance recording activity component: update view recordings button visibility based on recording status and improve toolbar button text for active recording state 2025-07-29 19:10:35 +02:00
Carlos Santos fe3f90d266 ov-components: Implement error handling for recording start failures and enhance UI interactions 2025-07-29 18:19:16 +02:00
Carlos Santos 5f6b404576 ov-components: Enhance error handling UI in recording activity component with modern styling 2025-07-29 17:50:15 +02:00
Carlos Santos 9b8348bc04 ov-components: Enhance recording activity component with improved status handling and styling 2025-07-29 17:35:28 +02:00
Carlos Santos 1403d062e9 ov-components: Fixed wrong initialize value in show recordings directive 2025-07-29 15:50:31 +02:00
Carlos Santos 7bf0e0036c ov-components: optimize participant name subscription with filter and tap operators 2025-07-29 15:46:05 +02:00
Carlos Santos 76c957903f ov-components: Refactors config service to use RxJS Subjects
Updates the configuration service to use RxJS BehaviorSubjects and Observables for managing configuration values.

This change improves the reactivity and maintainability of the configuration system by providing a consistent and type-safe way to manage application settings.

Specifically, it introduces a helper method to create configuration items with BehaviorSubject and Observable, and uses distinctUntilChanged and shareReplay operators to optimize the observable streams.

ov-components: Refactor configuration management in OpenVidu components

- Updated directive methods to use centralized configuration updates for general, stream, and toolbar settings.
- Replaced individual setter methods with batch update methods for improved performance and maintainability.
- Introduced specific comparison methods for configuration objects to optimize change detection.
- Enhanced the structure of configuration interfaces for better clarity and organization.
- Removed redundant code and streamlined the configuration service for better readability.

ov-components: Enhance participant name handling in PreJoin and Videoconference components
2025-07-29 14:05:14 +02:00
Carlos Santos 68ea8001f1 ci: Update Selenium Chrome version to 138.0 and add internal directives tests workflow 2025-07-29 11:42:56 +02:00
Carlos Santos 5a249fc3e1 ov-components: Add internal directives tests and update related components for recording functionality 2025-07-29 11:38:46 +02:00
Carlos Santos 9bac0f6490 ov-components: Add directive to control visibility of recording list and update related services and components 2025-07-29 10:47:22 +02:00
Carlos Santos fa664c97f1 ov-components: Add view recordings button functionality and related directives 2025-07-29 10:26:25 +02:00
Carlos Santos 8e218ade3c ov-components: Add start/stop recording button directive and update related components 2025-07-28 18:51:20 +02:00
Carlos Santos 22af5c7df6 ov-components: Implement centralized template management for videoconference components 2025-07-22 19:24:07 +02:00
Carlos Santos 04b8b741e2 ov-components: Refactor videoconference component to use centralized state management 2025-07-22 18:17:57 +02:00
Carlos Santos 8af9f75a10 ov-components: Prevent prejoin from showing again after user initiates join process 2025-07-22 17:45:03 +02:00
Carlos Santos fabeaf1471 ov-components: Add ID to external view recording buttons for better accessibility 2025-07-22 17:05:33 +02:00
Carlos Santos 1ffd7ea9d6 ov-components: Fixed bug showing prejoin
- Rename joinSession method to join and update related calls for consistency
refactor
- Change isPrejoin method to showPrejoin in directive config service
2025-07-22 16:23:33 +02:00
cruizba 3af490522e openvidu-deployment: Change DefaultApp string literals to Meet in templates. 2025-07-22 14:08:25 +02:00
cruizba 0280b64084 openvidu-deployment: Azure HA - Replace Default App (OpenVidu Call) with OpenVidu Meet 2025-07-22 14:00:56 +02:00
cruizba 83aad06574 openvidu-deployment: Azure HA - Fix port priority rules. 2025-07-22 13:52:54 +02:00
cruizba 892c6efed2 openvidu-deployment: Azure Elastic - Fix port priority rules. 2025-07-21 21:21:04 +02:00
cruizba 5b888aafc0 openvidu-deployment: Build azure bicep of Elastic. 2025-07-21 21:02:53 +02:00
cruizba d918e8059a openvidu-deployment: Azure Elastic - Replace Default App (OpenVidu Call) with OpenVidu Meet 2025-07-21 21:00:23 +02:00
Carlos Santos 82ddca6b50 ov-components: Add IDs to action buttons in recording activity component for improved accessibility 2025-07-21 17:36:11 +02:00
Carlos Santos 6fb7d9583c ov-components: Enhance recording activity UI with additional status indicators and style adjustments 2025-07-21 17:03:22 +02:00
Carlos Santos 181c5f0789 ov-components: Improves recording activity UI
Refactors the recording activity component's template and styles
to use cards for displaying recording information.

Enhances the display of recording metadata, including duration,
size, and date, with appropriate icons.

Adds visual cues for active recordings and improves overall
responsiveness of the recording list.
2025-07-21 14:12:28 +02:00
Carlos Santos e486665efd ov-components: Updated recording activity component 2025-07-21 14:11:40 +02:00
Carlos Santos b659400c88 ov-components: implement read-only mode and customizable controls for recording activity 2025-07-21 14:11:40 +02:00
cruizba 98c7e3f751 openvidu-deployment: Build azure bicep of Single Node - PRO 2025-07-20 22:56:50 +02:00
cruizba 5e1df8b511 openvidu-deployment: Fix wrong environment variable in Azure Single Node - PRO 2025-07-20 22:42:23 +02:00
cruizba 16ec1f3920 openvidu-deployment: Replace Default App (OpenVidu Call) with OpenVidu Meet in Single Node Pro 2025-07-20 22:23:19 +02:00
cruizba b01e8f4d23 openvidu-deployment: update enabled modules to include openviduMeet in deployment script 2025-07-20 20:59:56 +02:00
cruizba 2413a0bb6d openvidu-deployment: Generate json from bicep Single Node - Community 2025-07-20 20:12:10 +02:00
cruizba bf6091e997 openvidu-deployment: Replace Default App (OpenVidu Call) with OpenVidu Meet in Single Node - Community 2025-07-20 20:10:25 +02:00
cruizba 9e0034dfac openvidu-deployment: Replace Default App (OpenVidu Call) with OpenVidu Meet 2025-07-18 21:53:32 +02:00
Carlos Santos 637142cec6 ov-components: add room initialization checks and error handling in SessionComponent 2025-07-17 17:03:18 +02:00
Carlos Santos c304c9c761 ov-components: add PreJoin directive to support custom pre-join templates in VideoconferenceComponent 2025-07-17 16:53:17 +02:00
Carlos Santos 4dd007395f ov-components: Refactor components to use takeUntil for unsubscribing from observables
- Replaced manual subscription management with takeUntil pattern
- Introduced a destroy$ Subject in each component to handle unsubscriptions on component destruction.
- Improved memory management and code readability by eliminating multiple subscription variables.
2025-07-17 15:44:37 +02:00
Carlos Santos 7573656060 ov-components: refactor VideoconferenceComponent to improve template setup and icon management 2025-07-17 14:00:51 +02:00
Carlos Santos 8407363aaf ov-components: add track subscription and manage room tracks published state 2025-07-17 13:29:17 +02:00
Carlos Santos 55fd64c254 ov-components: enhance recording functionality with track checks and UI updates 2025-07-17 13:29:17 +02:00
cruizba d151834048 openvidu-deployment: Replace OPENVIDU_CALL_SERVER_IMAGE with OPENVIDU_MEET_SERVER_IMAGE in deployment scripts 2025-07-16 12:36:15 +02:00
pabloFuente ce47224400 openvidu-testapp: make update interval for dialog optional 2025-07-14 22:18:12 +02:00
cruizba 61fbf9850b Add TCP port rules for WebRTC traffic on port 7881 and 50000-60000 across multiple deployment configurations 2025-07-11 21:33:05 +02:00
Piwccle ba1df4660c openvidu-testapp: RTCIceCandidate stats for publisher and subscriber peer connections fixed in firefox 2025-07-10 16:12:08 +02:00
pabloFuente d44e24592d openvidu-testapp: RTCIceCandidate stats for publisher and subscriber peer connections 2025-07-09 18:24:00 +02:00
Carlos Santos 91aa127dad ov-components: replace and improve recordingElapsedTime logic 2025-07-04 17:51:30 +02:00
Carlos Santos 1be876678c ov-components: add subscription for virtual background effects management 2025-07-04 15:55:22 +02:00
Carlos Santos 388981be31 ov-components: reorder imports and add ShowDisconnectionDialogDirective to ApiDirectiveModule 2025-07-04 12:51:57 +02:00
Carlos Santos 6497751375 ov-component: add showDisconnectionDialog directive and update service for disconnection dialog management 2025-07-04 12:45:34 +02:00
pabloFuente 5f0639c157 openvidu-test-e2e: adapted egress test to tolerate mediasoup limitation 2025-07-03 14:23:10 +02:00
pabloFuente e435a1a937 openvidu-test-e2e: fix signalTest 2025-07-02 21:53:45 +02:00
pabloFuente 932eda8115 openvidu-test-e2e: include event RoomEvent.ParticipantActive 2025-07-02 18:35:44 +02:00
pabloFuente 5d91f4d343 openvidu-testapp: add RoomEvent.ParticipantActive 2025-07-02 18:14:45 +02:00
pabloFuente 703698b25f openvidu-components-angular: fix comment links 2025-07-02 18:14:07 +02:00
pabloFuente b884e924b6 openvidu-test-e2e: added Egress tests 2025-06-30 14:34:37 +02:00
pabloFuente ee8847c5cb openvidu-testapp: add checkbox to force relay from browser 2025-06-30 12:11:09 +02:00
GitHub Actions 99c787c4f5 Revert "Bump version to 3.3.0"
This reverts commit 2083c078fd.
2025-06-26 20:02:58 +00:00
GitHub Actions 2083c078fd Bump version to 3.3.0 2025-06-26 20:02:55 +00:00
github-actions bc42a72836 openvidu-components-angular: Bumped version to 3.3.0 2025-06-26 18:43:30 +00:00
cruizba c3b7c6f4bb openvidu-deployment: Shutdown gracefully agents in aws and azure. 2025-06-25 19:03:10 +02:00
pabloFuente b913dbb3b8 openvidu-testapp: updated dependencies 2025-06-25 13:26:42 +02:00
pabloFuente f16eefa9df openvidu-testapp: differ between final and non-final transcription events 2025-06-25 13:26:28 +02:00
pabloFuente 96132553ae openvidu-testapp: add lk.transcription handler 2025-06-24 17:26:38 +02:00
Carlos Santos 709779b7fd ov-components: Remove debugger statement from setRecordingStarted method in RecordingService 2025-06-24 16:18:18 +02:00
cruizba 11ac3d32eb openvidu-deployment: Fix wrong image 2025-06-24 11:34:54 +02:00
cruizba c8bbcfed56 openvidu-deployment: Add OPENVIDU_AGENT_SPEECH_PROCESSING_IMAGE environment variable to installation scripts 2025-06-24 11:33:21 +02:00
Piwccle 76a6f6c301 openvidu-deployment: azure - Add support for additional install flags in all the deployments 2025-06-18 16:26:50 +02:00
Carlos Santos 2de2920acf ov-components: Add check for existing Material Icons link in VideoconferenceComponent 2025-06-18 10:12:39 +02:00
cruizba fd8be9f23f openvidu-deployment: - AWS HA - Add experimental TURN TLS 2025-06-14 02:02:29 +02:00
cruizba e66e5a23e1 openvidu-deployment: - HA - Open port 5349 in media nodes for master nodes if Turn Domain is not configured 2025-06-13 22:02:13 +02:00
cruizba 335fd8e3c3 Remove unnecessary condition for SecurityGroupIngress in CloudFormation templates 2025-06-13 21:37:39 +02:00
cruizba 237ebe1d59 openvidu-deployment: Add "Additional Installer Flag" 2025-06-13 19:20:25 +02:00
cruizba 5e5e404d7d openvidu-deployment: Remove non official Cloudformation 2025-06-13 19:20:25 +02:00
Carlos Santos 16e869c5da ov-components: update API directive documentation 2025-06-11 12:50:08 +02:00
Carlos Santos c628b2ab68 ov-components: enhance directive table generation logic and improve error handling 2025-06-11 12:49:41 +02:00
Carlos Santos b7d9f822de ov-components: apply background from storage based on background effects button status 2025-06-10 17:28:00 +02:00
Piwccle fe606cbf15 openvidu-deployment: azure - added cluster data container for caddy and observability info 2025-06-10 16:30:41 +02:00
Piwccle 7c71f41d95 openvidu-deployment: azure - removed one '}' that was making TURN HA fail 2025-06-10 12:48:12 +02:00
Piwccle 9728d966ad openvidu-deployment: azure - bugfix: added dependsOn to remove possible race condition 2025-06-10 12:17:10 +02:00
Piwccle ce610cab03 openvidu-deployment: azure - removed parameter from HA CUID 2025-06-10 11:46:42 +02:00
Piwccle d8f14c6905 openvidu-deployment: azure - changes to let TURN work in HA deployment 2025-06-10 11:34:57 +02:00
Piwccle bdf4f07a28 openvidu-deployment: azure - removed one line of the install script that was there to try the new delete_media_node 2025-06-10 11:08:55 +02:00
Piwccle 206a51baf7 openvidu-deployment: azure - added scripts to delete media node if fails 2025-06-10 10:56:50 +02:00
Carlos Santos 94b51b9971 ov-components: Update language files to replace "session" with "room" for consistency across translations 2025-06-09 11:21:35 +02:00
github-actions 8984cfdcad openvidu-components-angular: Bumped version to 3.2.1 2025-06-05 11:01:42 +00:00
Carlos Santos 022d18578e ov-components: Remove unnecessary mat-line directive from settings panel options 2025-06-05 12:49:53 +02:00
GitHub Actions 9beb8b435a Revert "Bump version to 3.2.0"
This reverts commit 26b790bfd8.
2025-06-04 15:01:06 +00:00
GitHub Actions 26b790bfd8 Bump version to 3.2.0 2025-06-04 15:01:02 +00:00
github-actions 308315dee4 openvidu-components-angular: Bumped version to 3.2.0 2025-06-04 14:50:58 +00:00
cruizba 5fac396487 Update submodule openvidu-livekit for 3.2.0 2025-06-04 16:34:41 +02:00
Piwccle 99e36178a5 openvidu-deployment: builded .bicep 2025-06-04 13:29:32 +02:00
Piwccle 8999076291 openvidu-deployment: azure - HA fixed turn 2025-06-04 13:29:32 +02:00
cruizba 220c6d7d4a openvidu-deployment: Bump Redis server image version to 7.4.4. 2025-06-02 20:41:24 +02:00
cruizba f989dc26d2 openvidu-deployment: Force minimum docker and docker-compose version in update script. 2025-06-02 17:54:33 +02:00
cruizba 3107d504ce openvidu-deployment: Force minimum docker and docker-compose version. 2025-06-02 17:47:46 +02:00
cruizba b8c0bb3283 openvidu-deployment: azure - update signal for stopping media node services to SIGQUIT 2025-06-02 17:00:49 +02:00
Piwccle 4aa8739ee8 openvidu-deployment: compiled all .bicep and fixed roles 2025-05-29 17:43:37 +02:00
Piwccle bcfcfdd704 openvidu-deployment: added roles in HA to configure blob storage 2025-05-29 17:40:53 +02:00
Piwccle a59872c9e9 openvidu-deployment: fixed common arguments for openvidu single node pro 2025-05-29 17:33:37 +02:00
Piwccle cbf4bafa36 openvidu-deployment: added more validation in CUID 2025-05-29 17:21:47 +02:00
Piwccle 95584d7437 openvidu-deployment: CUID for azure deployments modified to work better 2025-05-29 17:17:59 +02:00
cruizba 20e348ed60 Revert redis to 7.4.3-alpine 2025-05-29 17:11:18 +02:00
Piwccle fbcc460f10 openvidu-deployment: fixed ha config_blobstorage in all master nodes 2025-05-29 16:51:59 +02:00
Piwccle e7e1a39e05 openvidu-deployment: added Openvidu Single Node PRO and added v2compatibility modules in HA and Elastic deployments 2025-05-29 15:58:41 +02:00
pabloFuente 18fd65350c openvidu-integration-tests: update start-openvidu-local-deployment action 2025-05-29 14:43:41 +02:00
cruizba 1551bf8244 openvidu-deployment: Bump docker image versions for 3.2.0 2025-05-28 23:39:14 +02:00
pabloFuente 882f9405db openvidu-test-e2e: put RTSP container in network mode host 2025-05-28 12:51:37 +02:00
Piwccle af3608c81c openvidu-deployment: azure - added optional automationAccountName 2025-05-27 11:18:05 +02:00
Carlos Santos 395d0c3ade ov-components: fix name getter in ParticipantModel to return participant's name 2025-05-26 19:09:19 +02:00
Carlos Santos f0bcb3ac03 ov-components:remove unnecessary screenshot logging in API directive tests 2025-05-26 18:38:25 +02:00
Carlos Santos 3579b9dc6a ov-components: update URL handling in API directive tests and improve error logging in leaveRoom method 2025-05-26 18:31:51 +02:00
Carlos Santos dbb45eaffd ov-components: improve leaveRoom method by adding fallback navigation on error 2025-05-26 18:24:14 +02:00
Carlos Santos fc7d7fef5a ov-components: replace fit with it for consistency in API directive tests 2025-05-26 17:52:55 +02:00
Carlos Santos 3f234276ee ov-components: enhance leaveRoom method with error handling and verification steps 2025-05-26 17:46:54 +02:00
GitHub Actions b10bc5f8c6 Revert "Bump version to 3.2.0-dev1"
This reverts commit a9e727fd51.
2025-05-26 14:34:37 +00:00
GitHub Actions a9e727fd51 Bump version to 3.2.0-dev1 2025-05-26 14:34:34 +00:00
cruizba c9b350eddc openvidu-deployment: Add single node PRO. Update,sh changes 2025-05-26 13:39:18 +02:00
Carlos Santos 21c297c73b ov-components: ensure room is left after each test in attribute and event directives 2025-05-26 10:33:17 +02:00
Carlos Santos 7df7b31d97 ov-components: add screenshot logging and delay in API directives tests 2025-05-23 18:13:35 +02:00
Carlos Santos d8d4870eb7 ov-components: add screenshot logging for video presence check 2025-05-23 17:18:02 +02:00
Carlos Santos aa15e8b713 ov-components: add delay before checking session presence in audio disabled test 2025-05-23 15:48:15 +02:00
Carlos Santos 621df40a7f ci: update cleanup action references in workflows to use official OpenVidu action 2025-05-23 15:37:13 +02:00
Carlos Santos 147f7078a0 ci: update action for building and serving openvidu-components-angular Testapp to use the latest version 2025-05-23 15:19:48 +02:00
Carlos Santos 55a67f191a ci: replace custom action for building and serving openvidu-components-angular Testapp with official OpenVidu action 2025-05-23 15:17:50 +02:00
Piwccle 31587d7181 openvidu-deployment: azure - added 2 'none' values missing in HA .bicep 2025-05-23 14:32:27 +02:00
Carlos Santos d0f714a5e2 ci: replace setup action for OpenVidu Call Backend with official action 2025-05-23 13:58:20 +02:00
Carlos Santos e4ed447009 ci: remove setup action for OpenVidu local deployment 2025-05-23 13:58:20 +02:00
Piwccle 57ea002953 openvidu-deployment: azure - compiled all new .bicep 2025-05-23 13:53:24 +02:00
Carlos Santos 1b5a230132 ci: uses OpenVidu local deployment action in integration tests 2025-05-23 13:29:06 +02:00
Carlos Santos 7348402364 ci: update openvidu-local-deployment action to use the official OpenVidu action 2025-05-23 13:27:22 +02:00
Piwccle 915a4598b1 openvidu-deployment: azure - CUID for elastic and ha deployments and adjustments to those .bicep to support the new CUID 2025-05-23 13:19:59 +02:00
Carlos Santos 0b017b2abb ci: update workflow to use OpenVidu action for local deployment setup 2025-05-23 12:55:36 +02:00
Carlos Santos c12dbf247c ov-components: refactor participant left and room disconnected handling to use a common disconnect method 2025-05-23 12:02:29 +02:00
pabloFuente f087c172fc openvidu-testapp: remove bold font weight from buttons 2025-05-23 11:49:25 +02:00
pabloFuente fe3e99e4e1 Find out RTSP container IP instead of using host.docker.internal 2025-05-23 11:49:25 +02:00
Carlos Santos 442b99771a ov-components: enhance error handling and add screenshot capture during room leave process 2025-05-23 11:41:56 +02:00
Carlos Santos 5f9fb06c2a ov-components: add error logging and screenshot capture on room leave failure 2025-05-23 11:35:21 +02:00
Carlos Santos dfae82d4cf ov-components: add event handling for participant left and update config state 2025-05-23 11:24:45 +02:00
Carlos Santos 549a822491 ov-components: rename redirectOnLeaves to redirectToHomeOnLeaves for clarity and update related logic 2025-05-23 11:09:07 +02:00
Carlos Santos b6f242107e ov-components: adjust max-width and padding for prejoin card styling 2025-05-22 13:29:16 +02:00
Carlos Santos 9023f03cee ov-components: center progress spinner in loading container 2025-05-22 13:26:11 +02:00
Carlos Santos 500b19d1b9 Revert "ov-components: change runner for API Directives and Events E2E tests to ov-actions-runner"
This reverts commit c275381cfd.
2025-05-22 13:06:59 +02:00
Carlos Santos 421c5ea29c ov-components: add participant left event handling and navigation in testapp 2025-05-22 12:47:13 +02:00
Carlos Santos cea8ce0def ov-components: update test descriptions for structural directives to improve clarity and consistency 2025-05-22 12:46:45 +02:00
Carlos Santos daf1349e75 ov-components: fixed panel toggle logic for external panels. Fixes #854
refactor togglePanel method for improved state management and clarity
2025-05-22 12:44:06 +02:00
Carlos Santos ffbc1f5e5d ov-components: update toolbar additional panel button count in tests and template 2025-05-22 12:42:26 +02:00
pabloFuente a02e23763a openvidu-testapp: updated all dependencies 2025-05-22 12:11:38 +02:00
Carlos Santos c275381cfd ov-components: change runner for API Directives and Events E2E tests to ov-actions-runner 2025-05-22 10:54:56 +02:00
Carlos Santos 34eb27dfe3 ov-components: update onRoomDisconnected event to reference onParticipantLeft for deprecation notice 2025-05-21 16:02:52 +02:00
Carlos Santos d3702ab6ac ov-components: update audio path for CI mode in Selenium configuration 2025-05-21 14:23:05 +02:00
Carlos Santos dafba8cdee ov-components: update audio capture path to use dynamic variable based on launch mode 2025-05-21 13:46:12 +02:00
Carlos Santos 995ce8c00b ov-components: add autoplay policy and file access arguments for CI chrome configuration 2025-05-21 13:45:04 +02:00
Carlos Santos 1e15fea5e4 ov-components: enable Toolbar E2E tests by removing conditional check 2025-05-21 13:33:12 +02:00
Carlos Santos 3139437bfe ov-components: remove OpenviduWebComponent and related files 2025-05-21 13:31:26 +02:00
Carlos Santos 59112b79fa ov-components: add initial E2E tests for captions functionality 2025-05-21 13:31:18 +02:00
Carlos Santos fd486270b9 ov-components: update audio capture file in E2E tests and remove unnecessary entry from .gitignore 2025-05-21 13:24:08 +02:00
Carlos Santos 042f9b5a89 ov-components: add E2E tests for toolbar 2025-05-21 13:22:29 +02:00
Carlos Santos 28e96647fa ci: Added stream tests 2025-05-21 13:15:30 +02:00
Carlos Santos 35eacb45a1 ov-components: update E2E tests for stream functionality and adjust audio capture file 2025-05-21 13:13:56 +02:00
Carlos Santos c42108bd22 ov-components: enable Panels E2E test by removing conditional check 2025-05-21 12:45:48 +02:00
Carlos Santos 63588148a7 ci: update screen sharing test command 2025-05-21 12:43:13 +02:00
Carlos Santos 52d253a1db ov-components: add E2E tests for screensharing features 2025-05-21 12:41:34 +02:00
Carlos Santos bf7d83134a ov-components: add panels E2E test suite 2025-05-21 12:11:01 +02:00
Carlos Santos 77bba7e587 ov-components: uncomment screen track replacement test 2025-05-21 12:06:36 +02:00
Carlos Santos fb999df526 ov-components: comment out headless mode in chrome arguments for local testing 2025-05-21 11:55:44 +02:00
Carlos Santos 314a3d1898 ov-components: change fit to it for video disabled prejoin page test 2025-05-21 11:55:31 +02:00
Carlos Santos 35f1085870 ov-components: remove obsolete events E2E tests 2025-05-21 11:55:10 +02:00
Carlos Santos cfdaabfc0b ov-components: remove unit tests and update media devices E2E tests 2025-05-21 11:54:36 +02:00
Carlos Santos 146aeed893 ov-components: assign participant name to observable on ready to join 2025-05-21 11:07:57 +02:00
Carlos Santos 02b594e405 ov-components: Added events e2e tests 2025-05-20 18:55:03 +02:00
Piwccle bd3504b818 openvidu-deployment: azure - fixed one thing left to be able to try the new .bicep 2025-05-20 18:49:39 +02:00
Piwccle 743b05911c openvidu-deployment: azure - fixing .bicep file to work with the new CUID 2025-05-20 18:46:31 +02:00
Piwccle 1b2af77196 openvidu-deployment: azure - CUID for Single Node Deployment ready 2025-05-20 18:29:22 +02:00
Carlos Santos 1f13b11f88 ov-components: enable Chat E2E tests in workflow 2025-05-20 17:38:44 +02:00
Carlos Santos 1cba6761bb ov-components: update E2E test names and add chat feature tests 2025-05-20 17:38:06 +02:00
Carlos Santos 920bba1bf3 ov-components: update test to focus on VIDEO DISABLED scenario in prejoin page 2025-05-20 17:33:09 +02:00
Piwccle 1d3cba9517 openvidu-deployment: azure - fixing SSH key parameter in Single Node CUID 2025-05-20 17:15:47 +02:00
Carlos Santos 331a102a19 ov-components: add end-to-end tests for structural directives in OpenVidu Components 2025-05-20 16:56:19 +02:00
Carlos Santos 6fe461dc0c ov-components: refactor workflow jobs for clarity and organization 2025-05-20 16:51:23 +02:00
Carlos Santos baf3da51c2 ov-components: add end-to-end tests for attribute and structural directives 2025-05-20 16:51:23 +02:00
Carlos Santos 48084544ba ov-components: remove debug console logs for query parameters and participant name in testapp 2025-05-20 16:51:23 +02:00
Piwccle 6a02f96af2 openvidu-deployment: azure - added UI definition to Single Node 2025-05-20 13:58:37 +02:00
Carlos Santos 3c72bc6c4d ov-components: update disconnect logic to handle client-initiated events in OpenViduService 2025-05-20 13:17:00 +02:00
Carlos Santos 3027ab6c5b ov-components: update parameter name for audio detection display in testapp 2025-05-20 12:51:19 +02:00
Carlos Santos ffc6bb4c41 ov-components: streamline E2E test setup by removing redundant steps and renaming jobs 2025-05-20 12:44:02 +02:00
Carlos Santos 5df42d5344 ov-components: refactor participant name retrieval logic in VideoconferenceComponent 2025-05-20 12:40:22 +02:00
Carlos Santos 4ad8c52c38 ov-components: enhance testapp with dynamic configuration options 2025-05-20 12:40:04 +02:00
Carlos Santos 741954ac2b OV-COMPONENTS: upgrade chromedriver to 136.0.2 and selenium-webdriver to 4.32.0 2025-05-20 12:39:19 +02:00
Carlos Santos 75d6576603 ov-components: add end-to-end tests for API directives and implement leaveRoom utility function 2025-05-20 12:38:20 +02:00
Carlos Santos 8a9e9e0d27 ov-components: fixed race condition with onTokenRequested event and participantName 2025-05-19 19:10:40 +02:00
Carlos Santos 1065f32a3a ov-components: add action for building and serving openvidu-components-angular Testapp 2025-05-19 18:08:49 +02:00
Carlos Santos 223c7473e5 ov-components: add setup action for OpenVidu Call Backend in workflows 2025-05-19 18:03:26 +02:00
Carlos Santos f951eddfe5 ov-components: add cleanup action to workflows for better resource management 2025-05-19 17:55:09 +02:00
Carlos Santos 8dfb513bb0 ov-components: add setup action for local deployment and streamline workflow steps 2025-05-19 17:52:29 +02:00
Carlos Santos ab7a453507 ov-components: remove unused active button styles and clean up SCSS variables 2025-05-19 17:08:50 +02:00
Carlos Santos 5b112286d9 ov-components: add material symbols support and improve toolbar symbols handling 2025-05-19 16:59:24 +02:00
Carlos Santos c4c5fb9866 ov-components: improve logging for participant disconnection event 2025-05-14 17:50:49 +02:00
Carlos Santos bd711b57f3 ov-components: simplify disconnect logic by removing callback. The participantLeft event will be fired by LK event handler 2025-05-14 13:48:53 +02:00
Piwccle 94f2e3e573 openvidu-deployment: azure - changed one description of a param to clarify the use of the param 2025-05-13 14:36:12 +02:00
Piwccle b7a94f4b03 openvidu-deployment: azure - compiled .bicep into .json 2025-05-13 11:59:15 +02:00
Piwccle 21b94bc4fd Merge branch 'master' of https://github.com/OpenVidu/openvidu 2025-05-13 11:55:40 +02:00
Carlos Santos 745e04baa6 ov-components: enhance recording URL handling for backward compatibility 2025-05-13 11:35:04 +02:00
Carlos Santos 4b611893e9 ov-components: enhance recording URL handling for backward compatibility 2025-05-13 11:14:40 +02:00
Piwccle b8fc003a4c openvidu-deployment: azure - added existing storage account support in CE, Elastic and HA deployments 2025-05-13 11:01:22 +02:00
Carlos Santos ed579b4e72 ov-components: update recording stream URL to use '/media' segment instead of '/stream' 2025-05-12 16:00:42 +02:00
Carlos Santos d8ce736cc0 ov-components: improve disconnect handling and manage client-initiated disconnect events 2025-05-12 13:39:45 +02:00
Carlos Santos cb8f11449f ov-components: add UNKNOWN_DISCONNECT message for various languages and handle participant disconnection reason 2025-05-06 15:43:56 +02:00
Piwccle efb691f481 openvidu-deployment: added config script of azure blob storage in elastic deployment and added a rol assignment in CE needed 2025-05-06 09:03:55 +02:00
Carlos Santos a8c2459d5f ov-components: implement OnPush change detection strategy and optimize change detection calls in prejoin component 2025-05-05 14:35:51 +02:00
Carlos Santos 0074b28d3a ov-components: Fix available langs for allowing custom ones 2025-05-05 13:52:10 +02:00
Carlos Santos 760cf604eb ov-components: update package dependencies and TypeScript configurations
- Added @types/dom-mediacapture-transform to package.json for type definitions.
- Changed hoveringTimeout type in StreamComponent to ReturnType<typeof setTimeout> for better type safety.
- Updated TypeScript lib version from ES2020 to ES2021 in tsconfig files for improved features.
- Included dom-mediacapture-transform in types for TypeScript configurations across various tsconfig files.
- Removed empty types array in tsconfig.app.json to ensure proper type checking.
- Adjusted skipLibCheck settings in tsconfig files to improve compatibility with Livekit track processors.
2025-05-05 12:15:16 +02:00
Carlos Santos 8ce155df6a ov-components: enhance recording status management and elapsed time calculation 2025-04-30 19:18:29 +02:00
Carlos Santos cff617b0c3 ov-components: disable webcomponent E2E tests 2025-04-30 18:12:36 +02:00
Carlos Santos 127fbbd4e1 ov-components: update build process and module definition for improved structure 2025-04-30 17:58:11 +02:00
Carlos Santos 3adfa91c54 fix(tsconfig): add skipLibCheck comment for Livekit track processors 2025-04-30 15:22:18 +02:00
Carlos Santos 7f00318cbb ov-components: update dependencies and TypeScript configuration
- Updated @livekit/track-processors from 0.3.2 to ^0.5.6
- Updated livekit-client from 2.5.2 to 2.11.4
- Changed TypeScript lib option from "dom" to "DOM" in tsconfig.lib.json
- Added skipLibCheck option in tsconfig.lib.json and tsconfig.base.json
- Updated TypeScript lib option from "dom" to "dom" in tsconfig.base.json
2025-04-30 14:57:47 +02:00
Carlos Santos 5433f516a9 ov-components: remove redundant background processor removal logic in virtual background service 2025-04-30 14:54:26 +02:00
Carlos Santos 81fcae2d4e ov-components: enhance virtual background service updating the switching logic for improving performance 2025-04-30 14:38:43 +02:00
Carlos Santos 0c1e1a7134 ov-components: Updated to Angular 19 2025-04-30 14:37:10 +02:00
Carlos Santos 518e1511d2 ov-components: add participant left handling and update room disconnection logic 2025-04-30 12:13:03 +02:00
Carlos Santos b92630ecd8 ov-components: enhance participant disconnection handling with reasons and refactor disconnect logic 2025-04-30 12:13:03 +02:00
Carlos Santos 11137a2a8f ov-components: add disconnect and error messages for various scenarios in multiple language files 2025-04-30 12:13:03 +02:00
Piwccle 9310ff3ea1 openvidu-deployment: azure - added blob storage resources and modified CE to support config blobStorage 2025-04-23 13:26:33 +02:00
Piwccle 37428c91b6 openvidu-deployment: azure - changed links that references de runbook 2025-04-22 12:06:04 +02:00
cruizba 9e04d59b61 Add openvidu-deployment scripts 2025-04-22 11:46:24 +02:00
Micael Gallego c1f2971881
Fix NewGenVidu project logo in README.md 2025-03-24 19:49:32 +01:00
Carlos Santos 8c28228357 ov-components: update default recording stream URL in directives and config service 2025-03-23 14:25:35 +01:00
Carlos Santos 90fd0ef44e ov-components: add recordingStreamBaseUrl directive and integrate with config service for dynamic stream URL construction 2025-03-14 19:08:34 +01:00
Carlos Santos 6137bdbbbc ov-components: add null check for participant name updates in pre-join component and participant name directive 2025-03-12 19:03:14 +01:00
Carlos Santos 2acf636842 ov-components: reduce max-width of pre-join component to improve layout 2025-03-12 18:41:42 +01:00
Carlos Santos 0ad51d6c58 ov-components: remove max-height constraint from pre-join component styles 2025-03-12 18:28:53 +01:00
Carlos Santos 6f97b9d8c2 ov-components: move loading state update to ngAfterContentChecked lifecycle hook 2025-03-12 18:28:47 +01:00
Carlos Santos a64cf1d577 ov-components: enhance pre-join component layout and add participant name visibility check 2025-03-12 18:05:37 +01:00
Carlos Santos e373d23cc9 ov-components: add participant name visibility control to pre-join component 2025-03-12 17:19:55 +01:00
Carlos Santos 72888e4ea9 ov-components: add camera and microphone button visibility controls in the E2E tests 2025-03-10 10:27:44 +01:00
Carlos Santos 2bf212ccfe ov-components: add camera and microphone button visibility controls in toolbar and settings panel 2025-03-10 10:11:38 +01:00
Carlos Santos 5fba250b1d ov-components: remove ServiceConfigService and update components to use LayoutService directly 2025-03-08 17:42:43 +01:00
Carlos Santos 7315360fbc ov-components: add onParticipantLeft event and disconnect callback to notify when local participant leaves 2025-03-07 19:25:27 +01:00
Carlos Santos d965e72822 ov-components: add OpenViduComponentsUiModule with component and pipe declarations 2025-03-07 18:52:12 +01:00
Carlos Santos 288a585809 ov-components: rename participantId to participantName in ParticipantLeftEvent and update disconnect method 2025-03-07 13:52:43 +01:00
Carlos Santos 272eb9002c ov-components: rename participant created event to participant connected and update documentation 2025-03-07 13:42:50 +01:00
Carlos Santos dee470609c ov-components: clarify event documentation for local participant actions 2025-03-07 13:36:10 +01:00
Carlos Santos ad8f368a91 ov-components: enhance documentation for room and participant events 2025-03-07 13:30:26 +01:00
Carlos Santos 5d855a1338 ov-components: log room name when a room is created 2025-03-07 13:04:22 +01:00
Carlos Santos 3defad20cc ov-components: emit room created event after participant connection 2025-03-07 13:04:06 +01:00
Carlos Santos 9b4f330c4a ov-components: clarify method documentation for local participant connection 2025-03-06 13:45:02 +01:00
pabloFuente 7d10ec6097 openvidu-testapp: fix webpack builder with custom configuration 2025-02-19 12:38:57 +01:00
pabloFuente 8d443ac506 openvidu-testapp: update rest of dependencies 2025-02-19 12:13:37 +01:00
pabloFuente 1521a766e5 openvidu-testapp: update minor upgrade change 2025-02-19 12:09:43 +01:00
pabloFuente a1edded5df openvidu-testapp: update to Angular Material 19 2025-02-19 12:04:21 +01:00
pabloFuente fa507d492f openvidu-testapp: update to Angular 19 2025-02-19 12:03:43 +01:00
pabloFuente 0ae67e8a87 openvidu-testapp: update Angular Material 18 2025-02-19 12:01:54 +01:00
pabloFuente 051b14c5b2 openvidu-testapp: update to Angular 18 2025-02-19 11:48:56 +01:00
pabloFuente f610f37ac3 openvidu-testapp: update pollyfils.ts 2025-02-19 11:47:11 +01:00
pabloFuente 501881c602 openvidu-testapp: update to Angular Material 17 2025-02-19 11:42:14 +01:00
pabloFuente ea8f0e2101 Upgrade to Angular 17 2025-02-19 11:41:31 +01:00
github-actions d3520e9098 openvidu-components-angular: Bumped version to 3.1.0 2025-02-17 14:42:29 +00:00
cruizba b29b9102a9 update openvidu-livekit subproject to latest commit 2025-02-17 15:23:37 +01:00
Carlos Santos 64fbaa2a42 ov-components: Fixed nested event test 2025-02-13 12:43:22 +01:00
Carlos Santos 4c4380a87f ov-components e2e: Added participantLeft listener 2025-02-13 12:33:04 +01:00
Carlos Santos d8452c42ad ov-components: Fired room and participantLeft events 2025-02-13 12:31:50 +01:00
cruizba 09ba39642e openvidu-test-e2e: Disable flaky audio ingress tests for RTSP 2025-02-11 13:35:20 +01:00
pabloFuente 11c6f2f965 openvidu-testapp: remove unused imports 2025-02-11 12:47:02 +01:00
cruizba 9a01c0e179 openvidu-test-e2e: Fix file URL selection logic for lossless video encoding 2025-02-11 12:33:44 +01:00
cruizba 06fc88f2b0 openvidu-test-e2e: Add lossless flag to getFileUrl method 2025-02-11 12:30:56 +01:00
cruizba f19a9129ba openvidu-test-e2e: Improve CPU performance by using losless codec ffv1 and flac. Fix some tests also because of mp3 used as source instead of flac. 2025-02-11 02:28:22 +01:00
Carlos Santos f785dfd7ad ov-components: subscribe to vc directives in constructor 2025-02-07 17:21:09 +01:00
pabloFuente 8185324a0a openvidu-test-e2e: disable audio only opus RTSP test 2025-02-07 11:14:06 +01:00
pabloFuente 88214676a8 openvidu-test-e2e: add -crf flags to video encodings with ffmpeg 2025-02-06 23:16:36 +01:00
pabloFuente 9f9eda5ce4 openvidu-test-e2e: improve waiters resilience 2025-02-06 20:49:42 +01:00
pabloFuente 75bb35d00a openvidu-test-e2e: fix opus codec with "-ac 2" flag 2025-02-06 20:43:47 +01:00
pabloFuente d4006421e9 openvidu-test-e2e: add AAC audio codec RTSP tests 2025-02-06 20:27:32 +01:00
pabloFuente 0fe47c4b13 openvidu-test-e2e: test RTSP with all codecs 2025-02-06 20:07:17 +01:00
pabloFuente 5c97301c6d openvidu-testapp: allow configuring URI for Ingress URL types 2025-02-06 18:59:29 +01:00
pabloFuente de5f67dd3c openvidu-test-e2e: parameterized rtsp/srt port 2025-02-03 19:17:50 +01:00
pabloFuente da108a4031 openvidu-test-e2e: update rtstp server container to network host 2025-02-03 19:10:44 +01:00
pabloFuente 5fb3be503c openvidu-test-e2e: add RTSP and SRT tests 2025-02-03 15:36:37 +01:00
pabloFuente 6ea42e82c0 openvidu-testapp: add ingress URL type selector 2025-02-03 15:35:52 +01:00
Carlos Santos 6e1d9c7ee7 ov-components: Updated logo directive 2025-01-28 21:37:53 +01:00
Carlos Santos 4cdb761737 ov-components: Allowed Angular 19 2025-01-27 17:09:13 +01:00
Carlos Santos 51e3abd483 ov-components: Updated npm script 2025-01-27 17:04:11 +01:00
pabloFuente 77f23512a6 openvidu-test-e2e: add comment 2025-01-20 14:48:09 +01:00
pabloFuente f2cb2fb252 openvidu-test-e2e: add tags @OnlyPion and @OnlyMediasoup. Fix customIngress test 2025-01-20 14:46:16 +01:00
pabloFuente d3b8214dcb openvidu-test-e2e: add signal test 2025-01-17 11:45:24 +01:00
pabloFuente 98a4b1b2cb openvidu-test-e2e: fix array outbound exception in customIngressTest 2025-01-15 18:31:39 +01:00
github-actions 9114f4fcc6 openvidu-components-angular: Bumped version to 3.0.1-beta1 2025-01-09 12:26:03 +00:00
Carlos Santos 2ea61d05a1 ov-components: Fixed message badge color 2025-01-07 09:17:20 +01:00
pabloFuente c82d7315ef Update all Java project dependencies 2025-01-03 13:52:33 +01:00
pabloFuente 6f3475fd94 openvidu-test-e2e: fix version.surefire.plugin pom.xml version 2025-01-03 13:17:43 +01:00
pabloFuente 7de722714e Update pom.xml to remove openvidu-parent dependency 2025-01-03 13:15:11 +01:00
pabloFuente d2a59f1193 openvidu-test-e2e: disable required tests 2025-01-03 12:38:02 +01:00
pabloFuente 36df6348d6 Update pom.xml to update openvidu-java-client versions 2025-01-02 20:43:56 +01:00
pabloFuente fa0392a0a3 openvidu-test-e2e: fix testcontainer usage 2025-01-02 18:10:45 +01:00
juancarmore b829142caf openvidu-components-angular: Update links in documentation to use the latest version 2024-12-18 15:32:17 +01:00
juancarmore dead4853aa integration-tests: Refactor utility code. Exec MongoDB disconnect method after running all tests 2024-12-12 15:42:09 +01:00
cruizba d320cb2bdd ci: Remove OpenVidu V2 Test from master 2024-12-10 12:54:51 +01:00
juancarmore 07ba255beb Update integration tests workflow to use "development" branch when checking out openvidu-local-deployment and install LiveKit CLI 2024-12-09 19:04:05 +01:00
cruizba 5e4cbadff1 ci: Rename v2 test job 2024-12-09 14:06:20 +01:00
cruizba ee876987c1 Update workflow name for OpenVidu CE V2 tests 2024-12-09 13:58:53 +01:00
cruizba 0fd0b6c11c Fixing v2 e2e tests 2024-12-09 13:58:17 +01:00
pabloFuente 01d01f3d00 openvidu-test-e2e: add simple Firefox subscriber tests 2024-12-09 12:32:36 +01:00
juancarmore 363d352c79 Increase timeout for active entities fixer integration test 2024-12-06 14:08:07 +01:00
juancarmore 40f6bd790d Add GitHub Actions workflow for OpenVidu integration tests 2024-12-06 13:54:45 +01:00
juancarmore a01b1e2a2f integration-tests: Add test for openvidu active entities fixer 2024-12-05 21:04:41 +01:00
juancarmore c2d7f01310 Add integration tests setup with Jest 2024-12-05 21:02:04 +01:00
pabloFuente 5e0af77913 openvidu-test-e2e: fix race condition on client event management 2024-12-05 19:21:21 +01:00
pabloFuente 40ffd97aca openvidu-testpp: fixed versions of livekit dependencies to avoid typescript error TS1046 2024-12-05 12:13:10 +01:00
pabloFuente 09132835fe openvidu-testapp: update package-lock.json 2024-12-05 11:36:23 +01:00
pabloFuente 8c18243c88 openvidu-testapp: print string reasons 2024-12-05 11:35:16 +01:00
pabloFuente 01530fef32 openvidu-test-browsers: fix h264 codec in Selenium-managed Firefox 2024-12-04 17:21:11 +01:00
pabloFuente d1cca5efac openvidu-test-e2e: added force codec and ingress tests 2024-12-02 17:26:21 +01:00
github-actions d7f1d859a0 openvidu-components-angular: Bumped version to 3.0.0 2024-11-29 11:27:08 +00:00
cruizba 235d586d0f Update submodule openvidu for 3.0.0 2024-11-29 11:53:28 +01:00
pabloFuente 57be57d892 openvidu-testapp: fix codec selector 2024-11-27 16:47:50 +01:00
pabloFuente a4b010faba Add enableTranscoding ingress option for WHIP 2024-11-21 16:11:33 +01:00
pabloFuente 18343fa47d openvidu-testapp: add CreateIngressOptions to dialog 2024-11-21 14:54:49 +01:00
pabloFuente 738431b6bf openvidu-testapp: fix error messages 2024-11-18 17:08:47 +01:00
pabloFuente d156db6051 openvidu-testapp: refactor room service to use Node SDKs 2024-11-18 13:59:56 +01:00
Carlos Santos e1634efe39 ov-components: Refactored lang selector template 2024-11-06 12:34:04 +01:00
Carlos Santos ee79e39d4b ov-components: Updated css 2024-11-06 12:33:26 +01:00
Carlos Santos 47ccaf58c7 ov-components: Fixed recording activity panel styles 2024-11-06 11:43:34 +01:00
pabloFuente 0a3129e818 openvidu-testapp: add auto refresh of video track information 2024-11-06 11:32:19 +01:00
pabloFuente baa753ac21 openvidu-test-e2e: add simulcastDisabledDynacastEnabled test 2024-11-06 11:31:46 +01:00
Carlos Santos 6a7ab9b026 ov-components: Updated audio-wave css 2024-11-06 10:49:29 +01:00
Carlos Santos b59c56c3e8 ov-components: Updated css variable names 2024-11-06 10:06:51 +01:00
Carlos Santos 02e3fb0d4e ov-components: Updated css styles for improving custom color support 2024-11-05 17:48:10 +01:00
Carlos Santos ada5984a32 ov-components: Updated css color variables 2024-11-05 12:38:52 +01:00
pabloFuente 1d91d6fa9d openvidu-testapp: make deviceId a proper selector in VideoCaptureOptions 2024-10-28 19:12:16 +01:00
pabloFuente ed2fa45d59 openvidu-testapp: show codec in video track info window 2024-10-28 14:30:22 +01:00
pabloFuente 57d92873da openvidu-testapp: toggle video zoom 2024-10-24 11:37:04 +02:00
Carlos Santos 897404b54b ov-components: Removed unnecessary code
Removed getTokenMetadata method
2024-10-23 16:57:48 +02:00
pabloFuente c53b1b5b81 openvidu-test-e2e: improve test adaptiveStreamDisabledDynacastDisabledTest 2024-10-22 15:25:41 +02:00
pabloFuente 083adb1775 openvidu-testapp: update livekit dependencies 2024-10-22 12:13:11 +02:00
pabloFuente b74f340042 openvidu-test-browsers: move srcObject wait to JS script 2024-10-21 22:03:36 +02:00
pabloFuente 23ac1c3b00 Update to Java 17 2024-10-21 22:03:04 +02:00
pabloFuente cbc8a6b859 openvidu-tesr-browsers: wait for srcObject to be defined when checking media elements 2024-10-21 20:33:43 +02:00
pabloFuente 9f4bcc827e openvidu-test-e2e: reduce tests flakyness with active waits 2024-10-21 13:33:34 +02:00
pabloFuente 333436a90e Fix path in npm script 2024-10-15 15:56:47 +02:00
github-actions 2132d5b984 openvidu-components-angular: Bumped version to 3.0.0-beta3 2024-10-15 13:21:16 +00:00
cruizba 7ff73ac225 Update submodule openvidu for 3.0.0-beta3 2024-10-15 15:03:54 +02:00
Carlos Santos ee57064095 ci: Renamed openvidu components test file 2024-10-11 10:21:00 +02:00
Carlos Santos 28f2405cc6 ov-components: Enhanced tests timeout 2024-10-10 21:14:08 +02:00
Carlos Santos 7f2660abd9 ov-components: Removed unnecessary files 2024-10-10 21:07:23 +02:00
Carlos Santos 5a0aea9ecb ov-components: Used jasmine instead of mocha 2024-10-10 21:01:01 +02:00
Carlos Santos 5a40ce9056 ov-components: Set headless chrome for unit tests 2024-10-10 20:39:16 +02:00
Carlos Santos f309527c26 ci: Run unit tests 2024-10-10 20:32:10 +02:00
Carlos Santos 52422fb58a ov-components: Added unit tests 2024-10-10 20:30:02 +02:00
Carlos Santos 9a7a2e3adb ov-components: Fixed blocking dialog when connection issues 2024-10-10 20:28:48 +02:00
pabloFuente c273ae0109 openvidu-test-e2e: update manyToMany test 2024-10-10 13:18:58 +02:00
pabloFuente f19432af8e openvidu-test-e2e: improve test's flakiness with more checks 2024-10-09 10:47:00 +02:00
pabloFuente 9238becfe3 openvidu-testapp: update livekit dependencies 2024-10-09 10:24:23 +02:00
pabloFuente 8e12739c97 openvidu-test-e2e: fix uri resolution from protocol 2024-10-07 16:43:16 +02:00
Carlos Santos d19f0f7bb5 ov-components: Allowed custom title on admin components 2024-10-07 12:01:08 +02:00
pabloFuente 6bb5937b23 openvidu-test-browsers: remove geckodriver location 2024-10-04 13:28:18 +02:00
pabloFuente 3d60920447 openvidu-test-e2e: add enabled/disabled, Server API Mute and simulcast disabled tests 2024-10-04 13:27:20 +02:00
pabloFuente 0ce0e2acde openvidu-testapp: refactor TrackComponent 2024-10-04 13:25:44 +02:00
pabloFuente 4354561d5a openvidu-test-e2e: add new tests (speaker detection, simulcast, dynacast, adaptive stream) 2024-10-02 01:17:02 +02:00
pabloFuente 88baf99368 openvidu-testapp: new features to test simulcast, dynacast and adaptive stream 2024-10-02 01:14:42 +02:00
pabloFuente fdc3b82122 openvidu-test-e2e: add speaker detection and adaptive stream tests 2024-10-01 14:16:01 +02:00
pabloFuente e307af24e3 openvidu-test-e2e: improved e2e tests 2024-09-30 15:19:33 +02:00
pabloFuente 71598c2d7d openvidu-test-e2e: enable tests (one-to-one audio and video only, massive room) 2024-09-28 12:13:51 +02:00
Carlos Santos 28a0574d99 ov-components: Refactored translate service 2024-09-26 10:26:59 +02:00
Carlos Santos 7336f4f609 ci: Fixed start backend command 2024-09-24 14:47:25 +02:00
Carlos Santos 3d164c6422 ci: Fixed openvidu call backend path 2024-09-24 13:26:19 +02:00
Carlos Santos 72c5aa97ad ov-components: Refactored storage service 2024-09-24 12:51:43 +02:00
Carlos Santos c3b2b4663f ov-components: Exported storage service 2024-09-24 11:30:51 +02:00
Carlos Santos f7d6e81261 ov-components: Fixed selenium-webdriver types 2024-09-23 10:32:45 +02:00
Carlos Santos 8d99c376f7 ov-components: Added node types into tsconfig 2024-09-23 10:21:19 +02:00
Carlos Santos d37f094773 ov-components: Updated dependencies 2024-09-23 10:10:57 +02:00
pabloFuente 5bacf37523 openvidu-testapp: better end scenario logic 2024-09-19 13:37:46 +02:00
pabloFuente 888f0bdb7e openvidu-testapp: complete participant options. Add VideoResolution 2024-09-17 14:46:21 +02:00
pabloFuente 7e7b6d2915 openvidu-testapp: test scenarios. Full LiveKit options dialog 2024-09-17 01:32:41 +02:00
Carlos Santos bd6ba55504 ov-components: Refactored and improved config 2024-09-04 12:19:13 +02:00
Carlos Santos 724fbd9186 ov-components: Refactored config service 2024-08-26 13:20:14 +02:00
Carlos Santos 95b8d055ed ov-components: Exported toolbar model 2024-08-22 11:35:38 +02:00
Carlos Santos 0a6dd252af ov-components: Exported config service to make it public 2024-08-22 11:20:01 +02:00
Carlos Santos a82b2189bc ov-componentes: Added ovToolbarAdditionalButtonsPosition directive 2024-08-22 11:17:02 +02:00
Carlos Santos 9f0246db2f ov-components: Added cdk as peerDependencies 2024-08-22 11:13:37 +02:00
Carlos Santos 64f62dd716 ci: Fixed server start commands 2024-08-12 13:47:48 +02:00
Carlos Santos 33d71f24c3 ov-components: fixed screen sharing e2e 2024-08-02 11:44:57 +02:00
Carlos Santos 7c1066d126 ov-components: Specify screen sharing options 2024-08-02 11:12:52 +02:00
Carlos Santos 5bf5c68da4 ov-components: Updated css classes 2024-08-01 13:34:13 +02:00
Carlos Santos 33d11926a7 ci: Updated e2e test 2024-07-30 18:13:06 +02:00
Carlos Santos 6604d6aa1f ci: Updated build webcomponent step 2024-07-30 17:08:07 +02:00
Carlos Santos 1b93b1a551 ov-components: included fullscreen e2e event test 2024-07-30 16:44:07 +02:00
Carlos Santos 822ef1ad09 ov-components: Refactored screensharing e2e tests 2024-07-30 16:42:51 +02:00
Carlos Santos 2d6ab64d00 ov-components: Fixed chat e2e tests 2024-07-30 16:42:21 +02:00
Carlos Santos 4c9e949133 ci: Added webcomponent e2e tests 2024-07-30 16:34:07 +02:00
Carlos Santos 31dd06c7e8 ci: Updated e2e tests 2024-07-30 16:07:02 +02:00
Carlos Santos 17a6edbe91 ci: Added webcomponent directives e2e tests 2024-07-30 16:01:54 +02:00
Carlos Santos 9fd1c5b746 ov-components: Fixed webcomponent directives e2e tests 2024-07-30 15:48:13 +02:00
Carlos Santos 5072804e67 ov-components: Refactored and fixed device service 2024-07-30 15:45:22 +02:00
Carlos Santos 7b560b447c ov-components: Fixed fullscreen e2e test 2024-07-29 17:52:56 +02:00
Carlos Santos d52dc9b6cf ov-components: Remove old and unnecessary test and refactored code 2024-07-29 13:20:07 +02:00
Carlos Santos b2e50aa53b ci: Run E2E tests in parallel for improved performance 2024-07-29 13:08:37 +02:00
Carlos Santos 5fa86f4f4c ov-components: split ee2 tests into files 2024-07-29 12:59:25 +02:00
Carlos Santos c61bed5a75 ov-components: Fixed e2e tests events 2024-07-29 12:38:35 +02:00
Carlos Santos 27644e8fa5 ci: Commented webcomponent tests 2024-07-26 13:26:53 +02:00
Carlos Santos 9f7efd8ad5 ov-components: Added elements ids for testing 2024-07-26 13:24:02 +02:00
Carlos Santos a7e5f27eb0 ov-components: Updated generate-docs script 2024-07-26 10:30:24 +02:00
Carlos Santos 52564b5f5d ov-components: Avoid null pointer 2024-07-26 10:29:55 +02:00
Carlos Santos 3f1334b65d ci: Fixed ov-components test workflow running openvidu-call-backend 2024-07-24 18:32:12 +02:00
Carlos Santos 110cbc130f ci: Fixed start test app in e2e workflow 2024-07-24 18:07:32 +02:00
Carlos Santos 5097dc925e ov-components: fixed bundle path 2024-07-24 18:07:13 +02:00
Carlos Santos 551bc76ba1 ci: Wait for openvidu-local-deployment and testapp 2024-07-24 17:29:02 +02:00
Carlos Santos 25ef634757 ci: Updated openvidu-components e2e tests 2024-07-24 17:21:19 +02:00
Carlos Santos aa437be8cf ov-components: Updated dependencies 2024-07-24 17:02:15 +02:00
Carlos Santos d02b12141b ov-components: Refactored and cleaned code 2024-07-24 16:59:40 +02:00
Carlos Santos f28652b425 ov-components: Added missing services to providers section module
Fixed virtual background feature
2024-07-24 16:58:28 +02:00
Carlos Santos fc17b3bf9e ov-components: Fixed base href when playing and downloading recordings
Added base href to video src and downloading link for fixing the recordings features
2024-07-17 15:54:07 +02:00
github-actions d8033dcde4 openvidu-components-angular: Bumped version to 3.0.0-beta2 2024-07-16 12:56:54 +00:00
pabloFuente d6d828d3ea Update reference to openvidu-livekit 2024-07-16 12:38:21 +02:00
github-actions db28c79ee8 openvidu-components-angular: Bumped to version 3.0.0-beta2-dev.20240704 2024-07-04 16:13:56 +00:00
pabloFuente 7a7a9d6582 Add openvidu-livekit as git submodule 2024-07-02 19:23:37 +02:00
pabloFuente eccc37156a OpenVidu v3 2024-07-02 19:19:05 +02:00
Carlos Santos d9bc9b3700 ov-components: Added spinner while joining session 2024-06-28 13:32:09 +02:00
Carlos Santos db2748367c ov-webvomponent: Increased max limit bundle. 2024-06-25 14:45:11 +02:00
Carlos Santos 9fcc593fb2 openvidu-angular-v2compatibility: Bumped to 3.0.0-beta1 2024-06-25 13:14:59 +02:00
Carlos Santos 027ad510dc openvidu-java-client-v2compatibility: Bumped to 3.0.0-beta1 2024-06-25 12:51:09 +02:00
Carlos Santos 5f51f7446f openvidu-node-client-v2compatibility: Bumped to 3.0.0-beta1 2024-06-25 12:50:14 +02:00
cruizba 649a2efdab Change openvidu-java-client to 3.0.0-beta0 2024-06-25 11:56:10 +02:00
Carlos Santos 07e4ede64d ov-components: Fixed recording panel elements 2024-06-24 18:10:47 +02:00
Carlos Santos 5dd689adc6 node-client: Bump to 3.0.0-dev5 2024-06-24 16:49:34 +02:00
Carlos Santos 40c19cedca ov-components: Bump to 3.0.0-dev6 2024-06-24 16:49:15 +02:00
Carlos Santos 6ec78e5522 ov-components: Used openvidu-browser-v2compatibility dependency 2024-06-24 16:48:02 +02:00
Carlos Santos 0b89603e1b ov-components: Updated README 2024-06-24 16:19:42 +02:00
Carlos Santos 82264d436e ov-components: Bump to 3.0.0-dev5 2024-06-24 16:19:33 +02:00
Carlos Santos 81fa53b5bf Added v2compatibility suffix to java-client 2024-06-21 11:39:13 +02:00
Carlos Santos 30c705e8fc Added v2compatibility suffix to node-client 2024-06-21 11:30:34 +02:00
Carlos Santos 6698ae2314 ov-components: Added v2compatibility suffix to library and webcomponent 2024-06-21 11:20:34 +02:00
pabloFuente dc759dffd4 openvidu-browser: comment ICE server configuration priority 2024-06-05 18:03:23 +02:00
pabloFuente 2493d3c1c8 openvidu-testapp: update test-scenarios.component.ts 2024-06-05 17:38:23 +02:00
pabloFuente fdbd1bdc12 openvidu-browser: fix deprecated typedoc link 2024-06-05 17:25:13 +02:00
pabloFuente dfd614a634 openvidu-browser: add OpenViduAdvancedConfiguration.rtcConfiguration 2024-06-05 17:14:07 +02:00
pabloFuente 86c4abacb1 openvidu-java-client: fix javadoc errors 2024-05-28 13:08:10 +02:00
jenkinsopenvidu e709e63655 Update installation scripts for next release 2024-05-28 09:47:24 +00:00
jenkinsopenvidu 86f0d18417 Update to version 2.30.0 2024-05-28 09:44:59 +00:00
jenkinsopenvidu e965315ab6 Update docker-compose.yml files to version 2.30.0 2024-05-28 09:35:47 +00:00
jenkinsopenvidu 08a5950c22 Update openvidu-recording to version 2.30.0 2024-05-28 09:18:24 +00:00
jenkinsopenvidu 01298af7a6 Update openvidu-java-client to version 2.30.0 2024-05-28 09:13:34 +00:00
jenkinsopenvidu f66da6f5b4 Update openvidu-node-client to version 2.30.0 2024-05-28 09:10:41 +00:00
pabloFuente d65d2cf00e Update openvidu-browser 2024-05-28 11:01:47 +02:00
pabloFuente 8ff9c7c635 openvidu-test-e2e: fix oneToManyVideoAudioSession test 2024-05-24 14:05:15 +02:00
Carlos Santos d293d69571 webcomponent: Fixed material imports and added required polyfills file 2024-05-24 12:22:17 +02:00
Carlos Santos 6221c92bae ov-components: Updated testapp to Angular 17 2024-05-24 12:13:34 +02:00
Carlos Santos f2ab607c82 ov-components: Updated versions of CI workflow 2024-05-24 11:31:09 +02:00
Carlos Santos c2ac2384d9 ov-components: Updated Node.js version to 20 in CI workflow 2024-05-24 09:39:47 +02:00
Carlos Santos f756e48d4c ov-components: Updated e2e tests 2024-05-24 09:31:16 +02:00
Carlos Santos cc44e743a8 ov-components: Supported Angular 17 2024-05-24 09:11:02 +02:00
cruizba 86320a024e openvidu-testapp: disable buildOptimizer 2024-05-23 20:38:18 +02:00
Carlos Santos b970463325 ov-components: Removed Angular Material legacy modules 2024-05-23 14:09:47 +02:00
Carlos Santos c0bcb95282 ov-components: Fixed video poster on iPhone 2024-05-22 17:02:59 +02:00
pabloFuente 52c6126b8d Update version of Spring Boot in openvidu-server 2024-05-22 13:44:07 +02:00
cruizba 46ba88cf9a Revert "openvidu-node-client: Fix possible enum errors with typescript transpilation"
This reverts commit c1688c0d2a.
2024-05-22 13:23:48 +02:00
cruizba c1688c0d2a openvidu-node-client: Fix possible enum errors with typescript transpilation 2024-05-22 12:43:39 +02:00
Carlos Santos d1630e9b82 ov-components: Updated to Angular 16 2024-05-22 11:27:29 +02:00
Carlos Santos 0db1eda057 ov-components: Updated to Angular 15 2024-05-22 11:27:29 +02:00
cruizba 2adbdd9160 deployment: Update AMIs to Ubuntu 22.04 2024-05-21 19:42:21 +02:00
cruizba 218a9b5c9f deployment: Bump docker images FROM images 2024-05-21 16:08:31 +02:00
pabloFuente f89fd1e2cd openvidu-node-client: update dependencies 2024-05-21 13:39:45 +02:00
pabloFuente 795046b827 openvidu-browser: update dependencies 2024-05-21 13:37:12 +02:00
Carlos Santos cfd9417ee1 ov-components: Fixed e2e test config 2024-04-18 17:41:03 +02:00
Carlos Santos 004ab046be ov-components: Improved replace track sending stream params 2024-04-18 17:40:11 +02:00
pabloFuente ce74823006 openvidu-testapp: re-enable streamDestroyed event for Publishers 2024-04-04 23:04:12 +02:00
pabloFuente 762f5edf31 openvidu-testapp: disable streamDestroyed event on Publisher objects by default 2024-03-18 17:54:42 +01:00
pabloFuente d81e116e0d openvidu-testapp: add custom class to event panel contents 2024-03-18 13:01:49 +01:00
pabloFuente 2a44f20294 openvidu-browser: fix video element removal from StreamManager collection 2024-03-13 14:27:07 +01:00
pabloFuente 49e2e87f69 openvidu-testapp: update test-scenarios component 2024-03-07 11:52:25 +01:00
pabloFuente b92548c504 openvidu-testapp: better N:M and 1:M management 2024-03-06 16:53:18 +01:00
pabloFuente ce869751f1 openvidu-testapp: allow changing the auto join N:M number of participants 2024-03-06 15:59:20 +01:00
Micael Gallego f40dfa5466
Add acknowledgments to README.md 2024-03-02 17:04:33 +01:00
cruizba 78d17defa9 deployment: Missing token in metadata requests 2024-02-29 23:54:00 +01:00
cruizba aac79ef80f deployment: Use IMDSv2 in aws deployments 2024-02-29 20:24:54 +01:00
Pablo Fuente Pérez 4face2e556
Merge pull request #828 from OpenVidu/recording_experimental_flag
openvidu-recording: add experimental flag to chrome to avoid hiding l…
2024-02-13 12:08:25 +01:00
pabloFuente 69b41a1406 openvidu-recording: add experimental flag to chrome to avoid hiding local ips with mdns 2024-02-13 12:05:27 +01:00
Carlos Santos 8c18f4b366 openvidu-components: Released v2.29.3 2023-12-11 13:41:01 +01:00
Carlos Santos 44eb9e9fe0 openvidu-components: Emitted event when broadcasting button is clicked 2023-12-11 13:02:02 +01:00
pabloFuente a830033388 openvidu-server: fix https://github.com/OpenVidu/openvidu/issues/824 2023-11-03 12:36:10 +01:00
Carlos Santos d9d524b23c openvidu-components: Released v2.29.2 2023-10-26 11:44:43 +02:00
Carlos Santos 48d60eab40 openvidu-browser: Released v2.29.1 2023-10-26 11:38:12 +02:00
Carlos Santos 7802b068be openvidu-components: Added types/ws as dev dependency 2023-10-26 11:27:17 +02:00
Carlos Santos 875c8536cc openvidu-browser: Fixed bug with screensharing
When a screen publisher was initialized with audio but the user disable the publish audio after it, in the default browser popup, the subscriber was not able to receive the video and audio. There was an inconsistent with transceivers in webrtpeer
2023-10-26 11:10:49 +02:00
Carlos Santos 809ba26b35 openvidu-components: Released 2.29.1 version 2023-10-23 13:06:34 +02:00
Carlos Santos 96af7d3225 openvidu-angular: Avoid possible errors applying custom frame rate 2023-10-23 12:09:17 +02:00
jenkinsopenvidu 98b783e968 Update installation scripts for next release 2023-10-18 19:50:25 +00:00
jenkinsopenvidu 8d1a4720bb Update to version 2.29.0 2023-10-18 19:47:56 +00:00
jenkinsopenvidu c57d2b2753 Update docker-compose.yml files to version 2.29.0 2023-10-18 19:39:08 +00:00
jenkinsopenvidu 01d602633b Update openvidu-recording to version 2.29.0 2023-10-18 19:20:05 +00:00
jenkinsopenvidu 8edae4e81d Update openvidu-java-client to version 2.29.0 2023-10-18 19:13:51 +00:00
jenkinsopenvidu 626e2183c5 Update openvidu-node-client to version 2.29.0 2023-10-18 10:04:25 +00:00
Carlos Santos bb2c63cb5b openvidu-components: Released v2.29.0-beta1 2023-10-17 11:32:20 +02:00
Carlos Santos c8ff947a4f openvidu-components: Allow mute forcibly only for camera streams 2023-10-17 11:26:31 +02:00
Carlos Santos 1fb201375e openvidu-browser: Released v2.29.0-beta1 2023-10-17 10:54:31 +02:00
pabloFuente 2e07e25df7 openvidu-browser: do not add default audio track to screen media steam if screen audio source 2023-10-16 16:51:29 +02:00
pabloFuente 1e416325b6 Revert "openvidu-browser: fix wrong screen audio track management"
This reverts commit 50a07ed203.
2023-10-16 16:49:26 +02:00
Carlos Ruiz Ballesteros 55728b7235
Update build.sh 2023-10-16 13:35:13 +02:00
pabloFuente 50a07ed203 openvidu-browser: fix wrong screen audio track management 2023-10-16 13:04:30 +02:00
cruizba ff8605ef85 openvidu-server: Update Kurento version to 7.0.1-SNAPSHOT 2023-10-16 12:55:14 +02:00
cruizba ea846ac415 Fix: Recover endReason when ghost participant detected for webhook notifications 2023-10-16 12:49:47 +02:00
cruizba a14f8d997d openvidu-ci: move check kurento of snapshots from test-utils.sh to build.sh. Remove config of openvidu generic settings in bump 2023-10-14 23:02:56 +02:00
cruizba da5f55e34b openvidu-ci: Enable snapshots only if snapshot version is used 2023-10-14 21:29:36 +02:00
cruizba 39323c73a3 openvidu-e2e-tests: Fix possible race conditions in CustomWebhook.java 2023-10-12 22:33:48 +02:00
Carlos Santos 775a7bd436 openvidu-components: Supported screen audio bugfix 2023-10-05 17:58:54 +02:00
pabloFuente d2423b012d openvidu-browser: document audioSource to "screen". Warn when no videoSource to "screen" 2023-10-05 16:54:56 +02:00
pabloFuente ad96776571 openvidu-browser: fix getDisplayMedia audio bug 2023-10-05 16:42:21 +02:00
pabloFuente c8fd2090f2 openvidu-test-browsers: print hasAudioTracks and hasVideoTracks 2023-10-05 14:00:30 +02:00
pabloFuente beecb101e2 openvidu-test-e2e: improved "docker inspect" command to get docker gateway IP 2023-10-05 13:09:40 +02:00
pabloFuente 4384a74896 openvidu-test-e2e: dynamically discover docker gateway IP in mediasoup tests 2023-10-05 12:45:44 +02:00
cruizba d29254e56a deployment: Add c6a instance types to AWS CloudFormation templates 2023-10-03 10:45:55 +02:00
pabloFuente 796a478010 Update Node installation in openvidu/openvidu-test-e2e container 2023-09-29 13:48:51 +02:00
pabloFuente ac64aeb2be openvidu-server: fix circular dependency with @PostConstruct 2023-09-29 13:48:24 +02:00
Carlos Santos ec2396d904 openvidu-components: Fixed show additional panel when others are opened 2023-09-29 13:36:32 +02:00
pabloFuente 6ae3186c1e openvidu-server: remove IllegalStateException string filter for ghost participants 2023-09-28 15:39:17 +02:00
pabloFuente 96907f2c7f openvidu-server: try to delete any ghost participant after unknown ws close 2023-09-28 14:24:52 +02:00
pabloFuente 276722176b openvidu-test-e2e: fix changePublisherTest with different ChromeUser 2023-09-27 11:34:30 +02:00
pabloFuente 8a4cc402fd openvidu-server: remove extra slash in RecordingManager test path 2023-09-27 11:17:56 +02:00
Kazuma Arimura a30d3c5c9e
Update ja translation (#819)
* update title for japanese translation selector

* update translation configuration for japanese
2023-09-25 16:23:32 +02:00
pabloFuente a87086fb6c Update Selenium version 2023-09-21 11:58:58 +02:00
pabloFuente c24ad580de openvidu-test-e2e: fix docker run command to launch mediasoup-controller storing logs 2023-09-20 19:17:29 +02:00
pabloFuente 169df4373b openvidu-test-e2e: fix docker run command for mediasoup-controller 2023-09-20 17:59:50 +02:00
pabloFuente 41658de781 openvidu-test-e2e: store mediasoup-controller logs in /opt/openvidu folder 2023-09-20 17:46:30 +02:00
cruizba 4fccf86109 deployment: Increase AMI size media nodes 2023-09-19 15:36:09 +02:00
cruizba a8acfae4a8 deployment: Revert Ubuntu AMI filter to use Ubuntu Focal 20.04 2023-09-19 15:15:28 +02:00
cruizba 0497ccf439 deployment: Update at createAMI.sh scripts the Ubuntu AMI filtering to use Ubuntu Jammy 22.04 2023-09-19 11:25:03 +02:00
Carlos Santos f57c1de443 openvidu-components: Fixed screenshare e2e test 2023-09-18 11:44:24 +02:00
Carlos Santos 287ec58bab openvidu-components: Support screen audio
Now screen is always visible and independent of the camera connection. It has its own audio
2023-09-18 11:27:56 +02:00
Carlos Santos 93e48ce139 openvidu-browser: initialized getDisplayMedia with audio track 2023-09-18 10:50:29 +02:00
pabloFuente 087d5384c8 Update mobile testing 2023-09-14 16:24:09 +02:00
cruizba cb07252181 deployment: Update Lambda runtime to python3.11 for AWS deployments 2023-09-08 18:06:46 +02:00
pabloFuente bbfc579161 openvidu-browser: fix object initialization type error 2023-08-21 13:17:35 +02:00
Pablo Fuente Pérez 2f2001490a
Merge pull request #816 from semmel/semmel-inaccessible-localStorage
Tolerate inaccessible localStorage
2023-08-21 13:13:29 +02:00
Matthias Seemann 566e52f1dd
Tolerate inaccessible localStorage
When reading from localStorage, treat security exceptions like absent values. 
This supports running in third-party contexts when cross-origin cookies are blocked by the browser.
2023-08-03 21:23:27 +02:00
cruizba 918bf0ae6d deployment: While creating AMI disable flag '--disable-rollback' to remove unused NIGHTLY parameter 2023-07-31 16:01:42 +02:00
cruizba c683d989a6 Caching of driver not working in openvidu-deployment-tester. Disabling until fix 2023-07-31 14:55:11 +02:00
pabloFuente 2d320df71a Update Spring Boot from 2.7.6 to 2.7.14 2023-07-28 12:00:00 +02:00
cruizba 5bc4d20ae1 Update commons-collections4 dependency to version 4.4 2023-07-04 11:25:17 +02:00
Carlos Santos 9a6a4cbf25 openvidu-components: Added network control directives
Allowed frameRate, resolution and simulcast customization
2023-07-03 22:13:03 +02:00
cruizba 6bf48078a5 deployment: Add random TURN shared secret to .env file at enterprise ha aws 2023-06-30 17:37:48 +02:00
pabloFuente a44da5f043 openvidu-test-e2e: update default DOCKER_ANDROID_IMAGE env variable 2023-06-29 17:47:44 +02:00
pabloFuente 0b57843e84 openvidu-browser: make forceMediaReconnectionAfterNetworkDrop also affect subscribers 2023-06-28 15:46:03 +02:00
pabloFuente cc402f34d3 openvidu-server: fix possible ghost participant issue after network reconnection 2023-06-28 15:43:24 +02:00
pabloFuente efcc15a109 openvidu-browser: fix wrong call to onreconnected 2023-06-27 16:20:34 +02:00
cruizba 554fa142fc deployment: Update external TURN to version 4.6.2 2023-06-27 15:14:36 +02:00
cruizba 16c417e8e4 deployment: CF update launch configuration to launch template due to deprecation notice.
Link to the AWS announcement: https://aws.amazon.com/blogs/compute/amazon-ec2-auto-scaling-will-no-longer-add-support-for-new-ec2-features-to-launch-configurations/
2023-06-27 12:59:50 +02:00
Carlos Santos ca19a1235d openvidu-components: Released v2.28.1 2023-06-26 14:08:23 +02:00
Carlos Santos 9e7443ae7f openvidu-components: Added unique id to video elements 2023-06-26 13:31:03 +02:00
Carlos Santos 4ab66e30a1 openvidu-components: Exported translate pipe
This export will allow handle translations from a custom json file
2023-06-26 13:17:47 +02:00
cruizba 8dcf0096ee deployment: OpenVidu HA On prem - Wait for Media Node controller before launching 2023-06-24 00:59:18 +02:00
cruizba 2f797ca54f deployment: Remove coturn image at IMAGE_MEDIA_NODE_CONTROLLER in installation script of HA On premises. It is actually present in the docker-compose.yml 2023-06-23 17:16:03 +02:00
jenkinsopenvidu 1235b3ef40 Update installation scripts for next release 2023-06-23 11:28:29 +00:00
jenkinsopenvidu 9bbfc9855a Update to version 2.28.0 2023-06-23 11:27:22 +00:00
jenkinsopenvidu 7bd56abd9c Update docker-compose.yml files to version 2.28.0 2023-06-23 11:07:52 +00:00
jenkinsopenvidu 601f4bcfed Update openvidu-recording to version 2.28.0 2023-06-23 11:07:10 +00:00
jenkinsopenvidu ca0c9abeb9 Update openvidu-java-client to version 2.28.0 2023-06-23 10:56:37 +00:00
jenkinsopenvidu 70513750da Update openvidu-node-client to version 2.28.0 2023-06-23 10:54:02 +00:00
cruizba a8dcd8f3cc Bump OpenVidu recording to version 2.28.0-beta1 2023-06-22 21:58:13 +02:00
cruizba e59b055ec6 openvidu-recording: Revert preset from 'veryfast' to 'ultrafast' 2023-06-22 21:46:18 +02:00
cruizba ae694cc8e8 deployment: Missing pull at install_openvidu_enterprise_ha_node.sh 2023-06-22 12:51:17 +02:00
cruizba cd7f8ae282 Reformat of PR https://github.com/OpenVidu/openvidu/pull/809 2023-06-22 11:45:40 +02:00
Carlos Ruiz Ballesteros 759b7b2a70
Merge pull request #809 from semmel/patch-2
Fix Stream.isSendScreen() for custom videoSource
2023-06-22 11:43:24 +02:00
cruizba a1420849b4 deployment: Set default Coturn port to 443 in enterprise-ha deployment 2023-06-22 11:39:51 +02:00
Matthias Seemann 63e273129b
Fix Stream.isSendScreen() for custom videoSource
The custom MediaStreamTrack provided as videoSource parameter in the Publisher factory functions is now examined by the Stream.isSendScreen() method if it is a screen sharing video track.
2023-06-21 21:36:37 +02:00
Carlos Santos 734bc2710d openvidu-components: Updated chromedriver dependency 2023-06-21 15:49:57 +02:00
Carlos Santos 0cff58edb7 openvidu-components: Allowed override lang options with a directive 2023-06-21 15:39:45 +02:00
Carlos Santos 7c6ba2b584 openvidu-components: Fixed typo 2023-06-21 11:31:59 +02:00
Carlos Santos ddf2d936bb openvidu-components: Fixed button styles 2023-06-21 11:16:43 +02:00
Carlos Santos 41920219c3 openvidu-components: Emitted an event when language has been changed 2023-06-21 11:10:41 +02:00
cruizba bb72abe9c4 deployment: Update Kurento Media Server image version to 7.0.1 in enterprise-ha onprem 2023-06-16 16:14:01 +02:00
cruizba 946be88928 deployment: separated rules for dashboard/ and inspector/ in openvidu-proxy
To fix a rule in OpenVidu Enterprise to redirect `<domain>/inspector` to `<domain>/inspector/`,
now dashboard and inspector rules are separated to have different configurations
depending on the OpenVidu Edition PRO or Enterprise
2023-06-16 13:51:38 +02:00
cruizba fb6df7773a deployment: Restart and start OpenVidu CE services using "openvidu" deployemnt script 2023-06-15 17:14:26 +02:00
Carlos Santos 936287ae83 openvidu-components: Fixes #805
Audio and video muted directives were ignored when local storage values were present
2023-06-15 13:41:50 +02:00
cruizba d212f52f04 deployment: Update coturn to version 4.6.2 2023-06-14 18:44:18 +02:00
cruizba 22ab5641f7 deployment: Add HANodeRegistered and HANodeDeregistered to webhook events at openvidu-enterprise ha 2023-06-13 11:12:21 +02:00
cruizba e70fe4c3ab openvidu-server: Add HANodeRegistered and HANodeDeregistered to CDREventName 2023-06-13 11:05:29 +02:00
Carlos Santos 130f49d16b openvidu-components: open page after serve it locally 2023-06-01 12:56:06 +02:00
Carlos Santos 6bfe05f306 openvidu-components: Fixed e2e test timeout 2023-05-31 11:26:48 +02:00
Carlos Santos 12a34ca7cb Merge branch 'ov-components-refactor' 2023-05-31 10:55:51 +02:00
Carlos Santos 3f2e7c711e openvidu-components: Fixed e2e test 2023-05-31 10:43:43 +02:00
Carlos Santos f8812e615b openvidu-components: Wait for promise resolved 2023-05-31 10:08:45 +02:00
Carlos Santos 34d514118a openvidu-components: Updated deprecated methods messages 2023-05-31 10:00:00 +02:00
Carlos Santos fb057a5823 openvidu-components: Refactored Participant model 2023-05-31 09:56:36 +02:00
Carlos Santos 197b46f212 openvidu-components: Decoupled replaceTrack from participant service
- Refactored replace track method avoiding to use participant service 
- Split method in two replaceScreenTrack and replaceCameraTrack
2023-05-31 09:45:00 +02:00
Carlos Santos c52f632d7c openvidu-components: Added replace track e2e tests 2023-05-31 09:45:00 +02:00
Carlos Santos 55db788f50 openvidu-components: Refactored streams types enabled pipe 2023-05-31 09:45:00 +02:00
Carlos Santos d78774b218 openvidu-components: Refactored participant service
Moved some methods to participant model
2023-05-31 09:45:00 +02:00
Carlos Santos 749948a6d9 openvidu-components: Refactored openvidu and participant service
- Moved toggle screen method to participant service
2023-05-31 09:45:00 +02:00
Carlos Santos eb5984befe openvidu-components: Added e2e tests 2023-05-31 09:45:00 +02:00
Carlos Santos 504a9a915e openvidu-components: Updated local participant after toggling video 2023-05-31 09:45:00 +02:00
Carlos Santos 3175b5d328 openvidu-components: Added more e2e test
- Testing video and audio toolbar buttons
- Testing screensharing with video muted
2023-05-31 09:45:00 +02:00
Carlos Santos c6520133db openvidu-components: Refactored local participant updates 2023-05-31 09:45:00 +02:00
Carlos Santos b74ae7a6ab openvidu-components: Refactored participant and openvidu service
- Moved publishVideo from openviduService to participantService
- Mark old openviduService methods as deprecated
2023-05-31 09:45:00 +02:00
Carlos Santos d83604b92a openvidu-components: fixed e2e tests 2023-05-31 09:35:03 +02:00
Carlos Santos b013d851da openvidu-components: Updated chromedriver dependency to 110.0.0 2023-05-31 09:35:03 +02:00
Carlos Santos fd0d23563e openvidu-components: Refactored participants and openvidu service
- Migrated publishAudio method from OpenViduService to ParticipantService
2023-05-31 09:35:03 +02:00
Carlos Santos 1f6f151ce2 openvidu-components: Improved the way to create participant reference 2023-05-31 09:35:03 +02:00
Carlos Santos f20a2a8001 openvidu-components: Simplified streams pipe 2023-05-31 09:35:03 +02:00
Carlos Santos 7348ce6535 openvidu-components: Refactored css syles 2023-05-31 09:35:03 +02:00
Carlos Santos 9bcb55d4d8 openvidu-components: Refactored panel service 2023-05-31 09:35:03 +02:00
Carlos Santos 87f43537d2 openvidu-components: Fixed zoom in/out icons 2023-05-30 13:44:53 +02:00
Carlos Santos 02b1af2093 openvidu-components: Made settings menu visible while fullscreen 2023-05-30 13:17:00 +02:00
Carlos Santos 0bd8a6f38d openvidu-components: Fixed full screen status 2023-05-30 13:08:17 +02:00
cruizba 6f691e8bb1 deployment: Remove hard-coded IP addresses from load balancer 2023-05-29 17:09:02 +02:00
cruizba 4f13e5181b deployment: Remove image pull print statements in enterprise-ha installation scripts 2023-05-29 16:56:37 +02:00
cruizba c1f3b22bc9 deployment: Add script to update load balancer IPs in enterprise-ha deployment 2023-05-29 16:46:12 +02:00
cruizba b81c0dfccc deployment: Update install_ov_enterprise_ha_base.sh image pulling to include docker-compose.override.yml 2023-05-29 15:21:45 +02:00
cruizba de0ea61eb4 deployment: Set OPENVIDU_PRO_CLUSTER_RECONNECTION_TIMEOUT to 60 seconds in OpenVidu Enterprise HA on-premises 2023-05-29 14:38:07 +02:00
Carlos Santos c1cec2c07d
Merge pull request #803 from semmel/patch-1
fix: remove video element which was never inserted before
2023-05-29 11:18:50 +02:00
Matthias Seemann 76ec592865
fix: remove video element which was never inserted before
fixes #802
2023-05-25 20:41:26 +02:00
cruizba 0a952839c7 deployment: Fix installation script pull images 2023-05-22 18:36:09 +02:00
cruizba 912cdee47f deployment: Add installation and deployment files for OpenVidu Enteprise HA - On premises 2023-05-22 16:22:06 +02:00
cruizba 7b1f411db4 deployment: Update nginx for Enterprise HA on premises 2023-05-20 23:08:52 +02:00
pabloFuente 58c15b0e3c openvidu-browser: bug fix when checking system requirements on motorola edge devices 2023-05-19 13:39:19 +02:00
pabloFuente ba0e736da9 openvidu-server: remove incorrect size description of recording image 2023-05-19 13:21:34 +02:00
pabloFuente 423e0d302f openvidu-browser: remove code smell in OpenVidu.ts 2023-05-19 13:21:13 +02:00
cruizba b4b808e3f1 openvidu-node-client: Update axios version. Fix unhandled exception while fetching sessions when session is created 2023-05-18 14:16:03 +02:00
cruizba be7634c821 openvidu-node-client: Don't handle error on fetch if session is found 2023-05-17 17:42:59 +02:00
cruizba c0fa49af8d openvidu-node-client: Avoid multiple 'reject' calls in specific HttpErrors. Handling on errors in one place 2023-05-17 16:50:24 +02:00
cruizba 72b95741ca openvidu-server: Fix OPENVIDU_WEBRTC_ICE_SERVERS not being used when customIceServer is an empty list but not null 2023-05-16 01:56:02 +02:00
Carlos Santos 90d13cedc4 openvidu-components: Wait for the promise resolved from unpublish method 2023-05-05 10:42:45 +02:00
Carlos Santos 90acd8682c openvidu-browser: Avoided accessing to a property of null 2023-05-05 10:29:39 +02:00
Carlos Santos 4e50796547 openvidu-components: Fixed styles 2023-05-04 17:35:47 +02:00
Carlos Santos 2726fa6a67 openvidu-components: Minor code refactoring 2023-05-04 16:34:13 +02:00
Carlos Santos 4dc98e3272 openvidu-components: Fixed switch camera on Android devices 2023-05-04 16:14:19 +02:00
jenkinsopenvidu 75c9576f4d Update installation scripts for next release 2023-05-03 11:02:33 +00:00
jenkinsopenvidu 9f8cc36a9d Update to version 2.27.0 2023-05-03 11:01:36 +00:00
jenkinsopenvidu 61273ad642 Update docker-compose.yml files to version 2.27.0 2023-05-03 10:52:49 +00:00
jenkinsopenvidu c891a26e4b Update openvidu-recording to version 2.27.0 2023-05-03 10:49:02 +00:00
jenkinsopenvidu 6aa7a4106c Update openvidu-java-client to version 2.27.0 2023-05-03 10:44:23 +00:00
jenkinsopenvidu 83b14c39d6 Update openvidu-node-client to version 2.27.0 2023-05-03 10:41:47 +00:00
pabloFuente f922c5cd53 Update to Kurento 7.0.1 2023-05-03 12:32:51 +02:00
Carlos Santos fb101bc2c7 openvidu-components: Emitted event for updating recording list
Non moderators participants didn't update their recording list because they didn't know when a recording has been deleted or stopped. Now all standard participants know all recording events using custom signals and emitted an event to the application with the aim of updating the recording list.
2023-04-28 17:55:33 +02:00
Carlos Santos 9be838308c openvidu-components: Disabled start streaming button for no moderators 2023-04-27 16:02:31 +02:00
pabloFuente c7f1bbcd93 openvidu-test-e2e: extend broadcast and composed record test with STT 2023-04-27 13:35:30 +02:00
pabloFuente 6479382f58 openvidu-test-e2e: fix video dimension tests. Add new pro test 2023-04-27 13:16:35 +02:00
cruizba 026352133a deployment: Remove non needed comment 2023-04-27 12:55:02 +02:00
pabloFuente 1152a79354 openvidu-java-client: fix unit test 2023-04-27 10:59:24 +02:00
pabloFuente b40f120efa openvidu-server: allow only-audio broadcasting. Add new test 2023-04-26 18:46:35 +02:00
Carlos Santos f5e18fc11d openvidu-components: Fixed video recording cache
The browser was storing the play recording request on cache . Adding a query parameter which is updated each time fix this problem
2023-04-25 12:40:21 +02:00
Carlos Santos fffbdd3cd5 openvidu-components: Refactored recordings pipes 2023-04-24 17:41:29 +02:00
Carlos Santos 5f8fa08fe0 openvidu-components: Fixed connection data parse on new connection 2023-04-24 14:09:31 +02:00
Carlos Santos d7e7cfe6f7 openvidu-components: Hidden mute sound button for local participants 2023-04-21 13:33:17 +02:00
Carlos Santos f7b0f8e803 openvidu-components: Added e2e test for checking video sound button
Checking if sound button is not present for local participants
2023-04-21 13:32:13 +02:00
pabloFuente 35a6e823b6 openvidu-server: refactor recordingStarted notification for COMPOSED with video 2023-04-19 12:56:03 +02:00
pabloFuente c646f66aab Fix AndroidChromeUser REMOTE_URL 2023-04-18 18:22:52 +02:00
pabloFuente 7529de5897 ci-scripts: add "grep 172" to DOCKER_HOST_IP command 2023-04-18 18:02:06 +02:00
pabloFuente 19f9bee16e Update Android user to use correct remote URL 2023-04-18 17:17:38 +02:00
cruizba 82fe3dc986 ci: Remove runner-image instead of runner-deployment for build.sh --clean-environment 2023-04-14 16:10:29 +02:00
pabloFuente 0677268516 Change preset ultrafast to veryfast in openvidu-recording container 2023-04-14 10:01:07 +02:00
cruizba 4a11b3678b deployment: Change Docker image tags to master and pull new images in AWS CloudFormation KMS AMI template 2023-04-12 23:57:06 +02:00
Carlos Santos 1c675aa664 openvidu-components: Updated angular.json 2023-04-11 16:46:38 +02:00
Carlos Santos 2ca5e2362e openvidu-components: Removed workaround for avoiding blank videos on iOS 2023-04-11 11:30:46 +02:00
Carlos Santos 979fd14ccc openvidu-components: Avoided to show freeze videos when they are muted
Showing poster on iPhone when remote video is muted.
2023-04-11 11:29:01 +02:00
cruizba af31380bbd openvidu-java-client: Create 'performJarFileRelease' maven profile to build openvidu-java-client builds in a jar file for nightlies 2023-04-10 23:43:01 +02:00
cruizba 805c1bdb47 deployment: Parametrize correctly openvidu-recording version for cloudformation nightlies 2023-04-10 20:50:31 +02:00
Carlos Santos 1d68cbeaf8 openvidu-components: Cleared captions subscription 2023-04-10 15:43:32 +02:00
cruizba de9f195fd5 openvidu-recording: Remove CHROME_VERSION argument 2023-04-10 11:25:29 +02:00
cruizba 1edc3c055b openvidu-recording: Better way to add chrome public key for chrome installation 2023-04-10 11:12:06 +02:00
cruizba 898d12e695 deployment: Avoid aws-marketplace amis getting the latest ubuntu AMI in external turn CF 2023-04-06 17:26:11 +02:00
cruizba 91fd7c09ef deployment: Fix missing character in Enterprise CF 2023-04-05 02:25:37 +02:00
cruizba 4620645ae2 deployment: Fix AWS_CLI_DOCKER_TAG sed 2023-04-04 22:07:19 +02:00
cruizba 0c6f798692 Fix wrong elasticsearch host while using it externally 2023-04-04 20:54:34 +02:00
cruizba 5298a085cb deployment: Fix metricbeat and filebeat condition 2023-04-04 19:59:59 +02:00
cruizba 82371ba499 deployment: Typo: OPENVIDU_PRO_ELAS'IT'CSEARCH instead of OPENVIDU_PRO_ELASTICSEARCH at CF-OpenVidu-Enterprise.yaml.template 2023-04-04 19:23:42 +02:00
pabloFuente a0e6b137cc openvidu-server: avoid fatal error if an outdated version of openvidu-browser is in use by STT or broadcasting module 2023-04-03 19:52:30 +02:00
csantosm 16ec1c9480 openvidu-components: Added e2e test for audio only mediastream
Tested if NO_STREAM_PLAYING_EVENT exception is not showing when participant has video muted and MediaStream is audio only.
2023-04-03 15:45:14 +02:00
pabloFuente 1fe005c6af openvidu-test-e2e: fix custom layout broadcast test 2023-04-03 12:58:11 +02:00
pabloFuente 5d2e78238f openvidu-test-e2e: fix EXTERNAL_CUSTOM_LAYOUT_PARAMS default value 2023-04-03 12:54:21 +02:00
Pablo Fuente Pérez 83e9ab7021
Merge pull request #797 from OpenVidu/ov_browser_fix
Audio is not working properly when camera is muted
2023-04-03 12:10:22 +02:00
pabloFuente 7060a0b06f openvidu-test-e2e: fix custom layout broadcast test 2023-04-03 12:02:09 +02:00
pabloFuente 0296dcbd8e openvidu-test-e2e: remove unnecessary folder jenkins 2023-04-03 11:58:17 +02:00
csantosm ec807d3944 openvidu-browser: Fixed bug with audio only MediaStream
If a MediaStream is published with video track stopped  and a standard audio track, the video was not playing because the video track of subscriber was enabled. This track must be disabled for allowing play the video. 
Issue reference: https://openvidu.discourse.group/t/microphone-doesnt-work-correctly-on-web-from-a-mobile-device/4514
2023-03-31 14:37:22 +02:00
pabloFuente dade445ce7 Update openvidu-test-e2e Dockerfile 2023-03-31 13:00:48 +02:00
pabloFuente 3ae582700c openvidu-test-e2e: add custom layout broadcasting test 2023-03-31 12:57:50 +02:00
pabloFuente 60bddcebda openvidu-java-client: fix Javadoc typo 2023-03-31 12:24:36 +02:00
pabloFuente 7fa65661f9 openvidu-test-browsers: add --remote-allow-origins to ChromeUser 2023-03-31 12:02:05 +02:00
cruizba 5eb47d7401 openvidu-deployment-tester: Add index to docs 2023-03-29 21:48:40 +02:00
cruizba 6f6a6ad7e8 openvidu-deployment-tester: Move documentation text 2023-03-29 21:46:31 +02:00
cruizba bb2a1f6c39 openvidu-deployment-tester: Update docs with new tests 2023-03-29 21:44:50 +02:00
cruizba 11e5888747 openvidu-deployment-tester: Add recording and call parametrizable tests 2023-03-29 18:28:05 +02:00
cruizba 868835bb91 deployment: Add FOLLOW_OPENVIDU_LOGS parameter to openvidu ce script 2023-03-29 01:15:48 +02:00
cruizba 4ed42cee1d deployment: Rename some wrong descriptions for CF of external-turn 2023-03-28 23:44:18 +02:00
cruizba 1943d2f2e6 Create Cloudformation for external turn 2023-03-28 23:41:39 +02:00
pabloFuente 4ad79c7bcb Deployments: final version 2023-03-27 18:31:59 +02:00
pabloFuente ca0df78bc4 Deployments: update ENTERPRISE yaml template paths 2023-03-27 14:22:41 +02:00
pabloFuente f52673a8c4 Deployments: test ENTERPRISE AMIs 2023-03-27 11:43:22 +02:00
pabloFuente 6e826fcbc3 Deployments: move Enterprise AMI to openvidu repo 2023-03-27 11:42:15 +02:00
cruizba 09d89b2cdb openvidu-deployment-tester: Improve docker cache of drivers. Document how to develop the deployment tester image 2023-03-27 11:40:49 +02:00
pabloFuente 92048dcf7a Deployments: remove unused taskcat files 2023-03-24 17:11:20 +01:00
pabloFuente 1a6a998fea Deployment: remove unnecessary template yamls from S3 at the end 2023-03-24 13:43:29 +01:00
pabloFuente da32a74ff9 Deployment: test createAMI.sh in GH pipeline 2023-03-24 11:28:11 +01:00
pabloFuente d996e41258 Beautify create_image.sh for openvidu-deployment-tester 2023-03-23 16:15:30 +01:00
cruizba 9080159736 openvidu: Add version tag to create_image.sh of openvidu-deployment-tester 2023-03-23 14:57:09 +01:00
cruizba e482181644 openvidu: Docker image to tests deployments 2023-03-23 14:46:35 +01:00
pabloFuente 8d522bb136 workflows: replace gihub.event.inputs with inputs 2023-03-22 10:59:37 +01:00
pabloFuente fdcf14c9ae Workflow: fix wrong script method --build-openvidu-browser 2023-03-21 16:06:55 +01:00
pabloFuente 09c53bb86f ci-scripts: divide commons.sh into 3 different scripts 2023-03-21 15:54:06 +01:00
pabloFuente 855eceab23 Deployments: remove unncessary script test-no-market.sh 2023-03-21 13:33:40 +01:00
pabloFuente 47e6ed01a5 ci-scripts: replace old kurento-java repository with new one 2023-03-21 13:31:52 +01:00
cruizba 94bb69c418 deployment: Do not use IP level deny for virtual background 2023-03-21 11:30:35 +01:00
pabloFuente c4dfbdb419 Deployments: final version of createAMI.sh for PRO deployment 2023-03-19 03:38:53 +01:00
pabloFuente 9fabff5355 Deployments: test createAMI.sh 2023-03-19 01:23:23 +01:00
pabloFuente e8b75cd44d Deployments: rename createAMIs.sh to createAMI.sh 2023-03-19 00:32:39 +01:00
pabloFuente 81cc7450f5 Rename file cfn-openvidu-server-pro-no-market.yaml.template to CF-OpenVidu-Pro.yaml.template 2023-03-19 00:05:55 +01:00
pabloFuente ab55e4d046 Deployments: createAMI.sh script back to normal for CE 2023-03-18 23:51:03 +01:00
pabloFuente 11129e25b8 Deployemnts: comment full checkout if statement 2023-03-18 21:47:26 +01:00
pabloFuente 9af84c2d54 Deployments: comment checkout command for testing purposes 2023-03-18 21:33:34 +01:00
pabloFuente eae721a45b Update createAMI.sh scripts and yaml templates with new var names 2023-03-18 02:56:09 +01:00
cruizba 3c363878a1 deployment: Improve metricbeat and filebeat URL parsing 2023-03-17 22:28:35 +01:00
pabloFuente 5aa91f7217 ci-scripts: update scripts path warning 2023-03-17 17:28:15 +01:00
pabloFuente 1c29c3c76c ci-scripts: add --bump-maven-dependency-version method to commons.sh 2023-03-17 14:43:37 +01:00
pabloFuente 4add44a528 ci-scripts: add --generic-sed to commons.sh 2023-03-16 15:46:46 +01:00
pabloFuente 38ee33db27 Beautify createAMI.sh scripts 2023-03-16 13:14:05 +01:00
pabloFuente 81d561d1a0 Delete outdated scripts to update JS dependencies of openvidu-browser in tutorials 2023-03-16 13:10:53 +01:00
pabloFuente 38ef3681e7 Update installation scripts to prepare it for next release 2023-03-16 11:29:57 +01:00
cruizba 66687592de deployment: Check that minimal version of docker is 20.10.10 2023-03-16 00:45:26 +01:00
pabloFuente ab428b3ecc ci-scripts: fix OPENVIDU_MAVEN_GENERIC_SETTINGS management 2023-03-15 23:41:44 +01:00
pabloFuente fc55b27e3e openvidu-browser: update .gitignore 2023-03-15 23:06:46 +01:00
pabloFuente 59957d5f01 openvidu-browser: remove unwanted statics 2023-03-15 23:05:10 +01:00
jenkinsopenvidu 29461299e3 Update to version 2.26.0 2023-03-15 22:00:53 +00:00
pabloFuente ff189941bd Docker containers: fix create_image.scripts to allow if with wildcards 2023-03-15 22:49:54 +01:00
pabloFuente 0eb91d8948 ci-scripts: update build-openvidu-parent and build-openvidu-java-client methods 2023-03-15 21:14:15 +01:00
cruizba 280ba3b0c2 deployment: Fix unbound variable when WAIT_KIBANA_URL is empty for openvidu-server-pro image 2023-03-15 14:55:14 +01:00
jenkinsopenvidu 3dcde7db53 Update docker-compose.yml files to version 2.26.0 2023-03-15 13:52:22 +00:00
pabloFuente cd76c3a74b Unify JAR location in all openvidu-server Dockerfiles 2023-03-15 14:31:12 +01:00
jenkinsopenvidu 8e2f096217 Update openvidu-recording to version 2.26.0 2023-03-15 13:14:20 +00:00
pabloFuente 24f9a79aff GH workflow: replace step to "Use specific kurento-java commit" 2023-03-15 13:29:19 +01:00
pabloFuente c9d172c0af ci-scripts: replace PREPARE_KURENTO_SNAPSHOT to USE_SPECIFIC_KURENTO_JAVA_COMMIT 2023-03-15 13:25:09 +01:00
jenkinsopenvidu 9c2bb6a5c6 Update openvidu-node-client to version 2.26.0 2023-03-15 11:43:06 +00:00
jenkinsopenvidu 38eb4bd2c6 Update openvidu-node-client to version 2.26.2 2023-03-15 10:38:37 +00:00
pabloFuente 35113f6837 ci-scripts: fix method --wait-for-npm-dependency 2023-03-14 19:24:20 +01:00
pabloFuente 585767ec0c Use wildcard in Dockerfile of openvidu-server-pro 2023-03-14 16:20:20 +01:00
pabloFuente 2b78349b85 ci-scripts: add LINK_LOCAL_DEPENDENCIES env var to Inspector build 2023-03-14 16:19:04 +01:00
pabloFuente f5b4abce26 ci-scripts: update commons.sh to improve npm methods 2023-03-14 15:31:16 +01:00
cruizba c1a11f8e00 deployment: Improve cloudformation assertions 2023-03-14 15:24:22 +01:00
cruizba f86d71c0bf deployment: Revert coturn to 4.5.2 2023-03-13 18:03:19 +01:00
cruizba 0694281504 deployment: Add option to disable Elasticsearch in Cloudformation 2023-03-13 17:17:57 +01:00
cruizba 8764b7a23b deployment: Use OPENVIDU_PRO_ELASTICSEARCH instead of OPENVIDU_PRO_ELASTICSEARCH_ENABLED 2023-03-13 15:32:08 +01:00
pabloFuente d539504890 GitHub Action: add default imageto run the tests 2023-03-13 15:09:19 +01:00
pabloFuente 7ecf7483bd openvidu-test-e2e: extend wrongBroadcastTest check condition 2023-03-13 14:35:17 +01:00
pabloFuente 77d562c7de ci-scripts: update Setup scripts step 2023-03-10 14:59:30 +01:00
pabloFuente c4599b7529 Update version of kurento-java to 7.0.0 2023-03-10 14:35:19 +01:00
pabloFuente 1ac5ffbe32 ci-scripts: remove GITHUB_ACTIONS_WORKING_DIR from commons.sh 2023-03-10 14:33:30 +01:00
pabloFuente 2daf28518b ci-scripts: remove comment 2023-03-10 13:51:11 +01:00
pabloFuente 8d150d27ae ci-scripts: fix wrong env var input description 2023-03-09 19:59:41 +01:00
pabloFuente 378f6ea2ca ci-scripts: reorder openvidu-e2e-tests.sh methods 2023-03-09 19:13:25 +01:00
pabloFuente a36e87acc4 ci-scripts: remove unnecessary env var MEDIASOUP_CONTROLLER_VERSION 2023-03-09 19:06:51 +01:00
pabloFuente d2380dbfda ci-scripts: remove unused OPERA_VERSION env variable 2023-03-09 19:02:22 +01:00
pabloFuente bdb78db9d5 ci-scripts: fix other chmod command permissions 2023-03-09 18:50:55 +01:00
pabloFuente f0acefe685 ci-scripts: invert order in method --prepare-test-environment 2023-03-09 18:47:35 +01:00
pabloFuente d3d6e8d3be ci-scripts: add sudo to chmod command 2023-03-09 18:42:28 +01:00
pabloFuente 1892a90f88 ci-scripts: fix /etc/maven permissions 2023-03-09 18:37:59 +01:00
pabloFuente 80b08eeea5 ci-scripts: fix regression (default values in env vars are necessary) 2023-03-09 18:31:37 +01:00
pabloFuente c8546abd40 ci-scripts: remove default values of env vars as they are required: true 2023-03-09 18:24:55 +01:00
pabloFuente 249b3812ba ci-scripts: use TEST_IMAGE env var directly 2023-03-09 18:22:22 +01:00
pabloFuente ea35420526 ci-scripts: fix --prepate-test-environment parameter 2023-03-09 18:07:08 +01:00
pabloFuente 3f659457d6 ci-scripts: obtain test image from TEST_IMAGE en var 2023-03-09 17:53:11 +01:00
pabloFuente b5779e18bf ci-scripts: restore necessary maven parameter to install openvidu-parent 2023-03-09 17:34:22 +01:00
pabloFuente bc694f43d1 ci-scripts: remove unnecessary step to build openvidu-test-e2e 2023-03-09 17:27:13 +01:00
pabloFuente ac8af98404 ci-scripts: replace cd with popd 2023-03-09 16:42:29 +01:00
pabloFuente 572cc46c52 ci-scripts: simplify kurento-snapshots.xml setup 2023-03-09 16:33:03 +01:00
pabloFuente 2ec56608aa ci-scripts: allow --prepare-test-environment for localhost 2023-03-09 16:14:15 +01:00
pabloFuente 40c6bbfa6d ci-scripts: remove while loop in case statement 2023-03-09 13:15:30 +01:00
pabloFuente 794c16ae6d ci-scripts: remove unnecessary "shift 1" command 2023-03-09 13:11:21 +01:00
pabloFuente fa1d33163b ci-scripts: remove EXECUTE_ALL from commons.sh 2023-03-09 12:53:52 +01:00
pabloFuente 2f885c7309 ci-scripts: remove unused EXECUTE_ALL env var 2023-03-09 12:51:29 +01:00
pabloFuente 951be72be9 ci-scripts: fix workflow work path. Unify step names 2023-03-09 12:32:47 +01:00
pabloFuente 7d56ebfc77 ci-scripts: update workflow to refactoring 2023-03-09 12:17:04 +01:00
cruizba 4e3f241c13 deployment: Typo, forgot to use scale argument in docker-compose up 2023-03-08 18:15:18 +01:00
cruizba 7a8f7fb5d1 deployment: Add some missing changes from cb8d87aecc 2023-03-08 18:09:48 +01:00
cruizba cb8d87aecc openvidu-pro: Fix some Elasticsearch and Kibana config inconsistencies.
- 1. `ELASTICSEARCH_PASSWORD` must be greater than 6 characters
- 2. Port 443 and 80 is no longer needed to be specified when defining `OPENVIDU_PRO_ELASTICSEARCH_HOST`
  and `OPENVIDU_PRO_KIBANA_HOST`
- 3. OpenVidu Pro can run without Elasticsearch and Kibana by using `OPENVIDU_PRO_ELASTICSEARCH_ENABLED`
2023-03-08 17:57:52 +01:00
jenkinsopenvidu 53e75e5f83 Update openvidu-recording to version 2.26.0-beta1 2023-03-07 23:50:53 +00:00
pabloFuente 60e802f017 ci-scripts: add method --bump-application-properties-var-value 2023-03-08 00:26:59 +01:00
pabloFuente b495e94c9e openvidu-recording: udpate create_image.sh script 2023-03-07 20:26:18 +01:00
pabloFuente d395b807b3 ci-scripts: add bash methods to modify the deployment folder 2023-03-07 19:13:20 +01:00
pabloFuente a5a3cbd1e8 openvidu-test-e2e: fix checkVideoAverageRgbLightGray description 2023-03-07 15:55:26 +01:00
pabloFuente e6ea4ee1d8 openvidu-test-e2e: add replaceTrack test 2023-03-07 15:53:23 +01:00
pabloFuente 9fa6898db2 Deployments: add blank space to docker-compose.override.yml 2023-03-06 22:56:36 +01:00
pabloFuente 6d62d091df ci-scripts: add -j flag to jq command 2023-03-03 18:25:47 +01:00
pabloFuente 0334147690 Upgrade Kurento to 7.0.0-SNAPSHOT again 2023-03-03 13:43:10 +01:00
pabloFuente 4614ba80e7 Downgrade Kurento version to 6.18.0 2023-03-03 13:15:15 +01:00
pabloFuente 69cd6f9c1a ci-scripts: use jq to modify NPM dependencies 2023-03-03 12:23:31 +01:00
pabloFuente d3c98050ce Update Kurento snapshot version 2023-03-03 11:47:09 +01:00
pabloFuente b32ec088d8 Update commons.sh 2023-03-03 11:23:31 +01:00
pabloFuente 8db7c53a58 Extend commons.sh script 2023-03-01 17:54:30 +01:00
pabloFuente ffb2a1590c Update Docker image base versions of nginx and coturn 2023-03-01 14:05:21 +01:00
pabloFuente f48e1f805f Add /bin/bash to create_image.sh script 2023-02-28 16:34:03 +01:00
pabloFuente 9a3b7d5ae7 Add /bin/bash to create_image.sh script 2023-02-28 16:32:44 +01:00
Carlos Santos 64d3c09bd4 Revert "openvidu-components: Reduced bundle size compressing code"
This reverts commit 0cab779c8e.
2023-02-28 13:46:02 +01:00
Carlos Santos d99fb47161 ci: Printed commit url 2023-02-27 17:49:00 +01:00
Carlos Santos 49bdfa7930 ci: Added workflow inputs 2023-02-27 17:28:09 +01:00
pabloFuente 72cac3b49e Update openvidu-recording image to 2.26.0 2023-02-27 11:53:49 +01:00
Carlos Santos 0cab779c8e openvidu-components: Reduced bundle size compressing code 2023-02-24 12:12:10 +01:00
pabloFuente 90dfd60a06 openvidu-test-e2e: move start and stop RTMP server util methods 2023-02-23 15:02:18 +01:00
csantosm f3550c4f6a openvidu-node-client: Added custom logger. Fixes #791
Added custom logger and exported a new enableProdMode method with the aim of enabling the production mode and avoiding unnecessary logs
2023-02-22 23:56:46 +01:00
csantosm 027e85052a openvidu-node-client: Added .prettierrc file and formated the code 2023-02-22 23:23:43 +01:00
Carlos Santos e10198f501 openvidu-components: Reduced openvidu-angular bundle size 2023-02-22 15:53:25 +01:00
Carlos Santos 4af0e85341 openvidu-components: Fixed possible access to undefined 2023-02-22 14:07:00 +01:00
pabloFuente af8c4ec9d4 Github Workflow: comment unnecessary OPERA_VERSION input 2023-02-22 13:26:17 +01:00
Carlos Santos 8d4584dd79 openvidu-components: Updated testapp 2023-02-22 13:08:22 +01:00
Carlos Santos 421869d48e openvidu-components: Refactored recording and broadcasting services 2023-02-22 13:07:47 +01:00
Carlos Santos e45aec750e openvidu-components: Made responsive toolbar activities tags 2023-02-22 13:07:08 +01:00
pabloFuente 98d7c4415f openvidu-test-e2e: removed empty test 2023-02-22 12:49:59 +01:00
Carlos Santos 1363a19117 openvidu-components: Aligned activities status tag 2023-02-21 23:52:41 +01:00
Carlos Santos eba30772a3 openvidu-components: Improved activities toolbar tags styles 2023-02-21 23:34:42 +01:00
pabloFuente b4e7523277 openvidu-test-e2e: fix nginx.conf temp file for broadcast test 2023-02-21 16:44:13 +01:00
pabloFuente 0fc9b05f93 openvidu-test-e2e: extend waitForContainerIpAddress method 2023-02-21 15:41:10 +01:00
pabloFuente 1111c62bfe openvidu-test-e2e: get container IP using DockerClient 2023-02-21 14:53:35 +01:00
pabloFuente f7f2708b1f openvidu-test-e2e: fix custom HTTP client Java SDK test 2023-02-21 13:07:25 +01:00
pabloFuente 13651e8a76 openvidu-test-e2e: obtain broadcast container IP dynamically 2023-02-21 12:52:08 +01:00
Carlos Santos a1b7081f9d Updated paths on openvidu-components workflow 2023-02-21 10:51:49 +01:00
pabloFuente 175585b2f1 openvidu-test-e2e: make broadcast IP an env variable 2023-02-20 21:35:49 +01:00
pabloFuente 2b9b532656 openvidu-java-client: downgrade Apache HttpClient to 5.1.4 2023-02-20 16:05:40 +01:00
Carlos Santos 51728ec2d1 openvidu-components: Renamed streaming by broadcasting on webcomponent 2023-02-17 17:45:25 +01:00
Carlos Santos 54b7f82881 openvidu-components: Fixed typo on testing app 2023-02-17 17:23:13 +01:00
Carlos Santos 9d392c82cb openvidu-components: Made stt service property internal 2023-02-17 17:16:40 +01:00
Carlos Santos 931b9d63bd openvidu-components: Deleted unnecessary webcomponent directive 2023-02-17 17:10:06 +01:00
Carlos Santos 10bcc87ac5 openvidu-components: Renamed streaming by broadcasting 2023-02-17 17:03:15 +01:00
Carlos Santos d4be677613 openvidu-components: Integrated broadcast feature 2023-02-17 15:22:17 +01:00
pabloFuente 6aab00900e Remove unnecessary broadcast-nginx.conf 2023-02-17 14:35:26 +01:00
pabloFuente 4118ba2e92 openvidu-server: differentiate between activeRecordings and activeBroadcasts 2023-02-17 14:34:49 +01:00
pabloFuente 832b40fd83 Update wrongBroadcast concurrency test 2023-02-17 10:24:11 +01:00
pabloFuente cfb6f60aab openvidu-testapp: fix typo 2023-02-16 21:06:54 +01:00
Carlos Santos 8b83bb1c05 openvidu-node-client: Fixed typo 2023-02-16 20:57:50 +01:00
pabloFuente 5a1bc4f7c3 openvidu-server: rollback autoremove property on runContainer 2023-02-16 17:05:15 +01:00
pabloFuente bd23cfcd71 Broadcast SDKs. Broadcast tests in OpenViduProTestaAppE2eTest 2023-02-16 14:43:00 +01:00
pabloFuente ca5887ac06 openvidu-server: add BROADCAST_CONCURRENT_ERROR_CODE code exception 2023-02-15 10:51:28 +01:00
pabloFuente 5347849c6d openvidu-test-e2e: reduce Thread.sleep(1000) to Thread.sleep(750) 2023-02-15 10:50:51 +01:00
pabloFuente 8e04c2e38c openvidu-testapp: fix broadcast events push to event list 2023-02-15 10:50:19 +01:00
pabloFuente 2e940b3af7 openvidu-server: make autoremove a variable in DockerManager 2023-02-14 17:41:44 +01:00
pabloFuente 4d2fa546cf openvidu-testapp: broadcast 2023-02-14 17:40:48 +01:00
Carlos Santos 8083e3b5cb openvidu-components: Generate stronger unique id for participants 2023-02-10 15:50:20 +01:00
Carlos Santos 8cdd4dd751 openvidu-components: Avoided using await for returning a promise 2023-02-10 15:28:45 +01:00
pabloFuente 68ccf49f29 openvidu-test-e2e: update Session entity to include "broadcasting" property 2023-02-08 12:35:49 +01:00
pabloFuente f841886b52 Add broadcasting property to Session entity 2023-02-08 12:29:53 +01:00
pabloFuente fa91a529bc openvidu-browser: update Broadcasting link in Typedoc 2023-02-08 10:47:14 +01:00
pabloFuente c670bee1aa openvidu-test-e2e: EndReason test 2023-02-08 09:49:11 +01:00
pabloFuente 9cdca285a2 openvidu-server: fix CDR logback file. Add CDR test 2023-02-06 12:46:07 +01:00
pabloFuente a6b9e802c7 Broadcast events 2023-02-06 12:45:17 +01:00
pabloFuente cae40f5493 Change concept RTMP to Broadcast. Prepare openvidu-browser for broadcast events 2023-02-03 13:55:17 +01:00
pabloFuente 99e2b1fe97 openvidu-test-e2e: fix race condition when running openvidu-browser event callbacks 2023-02-03 13:33:19 +01:00
jenkinsopenvidu de5d712967 Update openvidu-java-client to version v2.26.0-beta1 2023-02-01 13:47:18 +00:00
pabloFuente 20db08a7e4 openvidu-test-e2e: log event.raw instead of event.text on STT simple trasnscription test 2023-02-01 14:27:05 +01:00
pabloFuente 11386c3176 openvidu-test-e2e: update REST API pro test, endpoint /health 2023-02-01 12:35:02 +01:00
pabloFuente 0fbf4d9297 openvidu-browser: fix Publisher Typedoc for method publishVideo 2023-02-01 12:16:15 +01:00
pabloFuente 8570782dfe openvidu-java-client: setHostnameVerifier in HttpClient 2023-01-31 21:11:52 +01:00
pabloFuente 66bbe9f41f openvidu-java-client: rollback to Apache HttpClient. Upgrade it to version 5 2023-01-31 20:35:33 +01:00
pabloFuente 047a23137a openvidu-test-e2e: remove Apache HttpClient dependency 2023-01-27 16:43:55 +01:00
pabloFuente d9a5ce30af openvidu-test-browsers: remove Apache HttpClient dependency 2023-01-27 16:32:37 +01:00
pabloFuente b78b127447 openvidu-java-client: refactoring to use Java HttpClient. Allow custom client 2023-01-27 16:15:32 +01:00
Carlos Santos 836fa84cd1 openvidu-components: Updated README 2023-01-26 10:48:32 +01:00
pabloFuente 9fceedd91f openvidu-test-e2e: log browser screenshot if Ionic failed receiving video 2023-01-25 13:50:46 +01:00
pabloFuente 7bd2ad5868 Azure and AWS STT tests 2023-01-24 17:06:02 +01:00
pabloFuente 2043c33761 openvidu-server: refactoring to support rtmp streaming 2023-01-18 18:11:16 +01:00
pabloFuente a41749602f Update openvidu-recording image 2023-01-18 16:02:57 +01:00
pabloFuente 2b2c2c8d01 openvidu-test-e2e: React Native and native Android tests 2023-01-09 16:58:37 +01:00
cruizba 83057362bd ci-scripts: Add docker image to not be removed at CLEAN_ENVIRONMENT 2023-01-09 12:19:22 +01:00
pabloFuente 3091070179 ci-scripts: recreate working dir just in case it was placed under /opt/openvidu 2023-01-04 14:16:30 +01:00
pabloFuente ecadb91b3e ci-scripts: move --clean-environment to its own separate function 2023-01-04 13:21:07 +01:00
pabloFuente 9681e10d45 ci-scripts: clean environment on prepare 2023-01-04 00:36:35 +01:00
pabloFuente 1c299f958b ci-scripts: add second argument to "prepare" method of commons.sh 2023-01-04 00:16:46 +01:00
pabloFuente 6ecc72800b ci-scripts: fix "popd: directory stack empty" 2023-01-03 13:03:31 +01:00
pabloFuente a65a22e204 GitHub Actions: move "serve testapp" to commons.sh 2023-01-03 12:25:23 +01:00
pabloFuente 705ac24e3b Extend commons-sh script to pack NPM dependencies into tgzs 2022-12-30 17:08:36 +01:00
pabloFuente 445f516c5b openvidu-test-e2e-android Docker image replace android-33 with android-32 2022-12-30 16:13:56 +01:00
pabloFuente 3f6316026c Export ANDROID_HOME variable in openvidu-test-e2e-android Docker container 2022-12-30 15:43:45 +01:00
pabloFuente 61f87bfe16 openvidu-test-e2e-android Docker image 2022-12-30 14:14:49 +01:00
Carlos Santos 179138eb50 openvidu-components: Fixed testapp admin dashboard 2022-12-30 13:14:55 +01:00
pabloFuente c3b7c5b147 Fix KURENTO_SNAPSHOTS_URL unbound variable 2022-12-30 11:58:07 +01:00
pabloFuente b9d3f16bac openvidu-test-e2e: OpenVidu Mobile E2e Test 2022-12-30 11:42:07 +01:00
pabloFuente 48da31f452 openvidu-test-browsers: fix CustomHttpClient when response is null 2022-12-29 22:41:49 +01:00
pabloFuente 5755412566 openvidu-test-e2e: pull DOCKER_ANDROID_IMAGE 2022-12-29 22:02:41 +01:00
pabloFuente bdb544ac4e openvidu-test-e2e: refactoring before mobile testing 2022-12-29 21:52:54 +01:00
pabloFuente 0664da5e5b openvidu-testapp: update default openvidu-node-client dependency 2022-12-29 16:44:08 +01:00
pabloFuente 5abd19deca openvidu-test-e2e: remove unnecessary webdriver-manager. Use new Selenium Manager 2022-12-28 12:56:45 +01:00
pabloFuente 863f633c64 openvidu-test-e2e: multiple Media Nodes STT Test 2022-12-28 11:48:49 +01:00
pabloFuente 0d03131217 openvidu-test-e2e: move restart methods to parent OpenViduTestE2e 2022-12-27 22:45:40 +01:00
cruizba 6069095804 ci: Common building scripts to commons.sh 2022-12-27 22:01:30 +01:00
pabloFuente e15b6115c8 openvidu-test-e2e: fix E2E STT test with mutable HashMap 2022-12-27 19:02:13 +01:00
cruizba ed418a205f ci: Make docker pull images optional 2022-12-27 17:15:31 +01:00
pabloFuente f962160c91 openvidu-test-e2e: fix E2E STT tests related to OPENVIDU_PRO_SPEECH_TO_TEXT_IMAGE 2022-12-27 16:15:17 +01:00
cruizba 5dc5528f90 ci: Fix EXECUTE_ALL unbound variable 2022-12-27 15:45:45 +01:00
cruizba 34f6d6935c Create commons.sh with common ci functions 2022-12-27 15:40:50 +01:00
pabloFuente 84864202aa openvidu-testapp: fix broken checkboxes after Angular update 2022-12-27 13:57:15 +01:00
Carlos Santos 8f8441949c Merge branch 'ov-components-rtmp' 2022-12-23 16:19:42 +01:00
Carlos Santos ab0cf2a343 openvidu-components: Added streaming activity
- Added streaming activity panel 
- Added streaming structurals directives
- Added streaming attributes directives
- Added e2e test
- Updated test app

openvidu-components: Updated e2e configuration


openvidu-components: Skipped pro e2e tests


openvidu-components: Allowed streaming for moderators only


openvidu-components: Request MODERATOR connection in testapp


openvidu-components: Fixed streaming signals


openvidu-components: Fixed bug with streaming status


openvidu-components: Fixed streaming button on status failed


openvidu-components: Refactored activities checks


openvidu-components: Forced streaming status to enum value


openvidu-components: Added non available error in streaming activity  

Streaming activity will show paid feature error if the service is not available
openvidu-components: Created and exported streaming error type


openvidu-components: Updated e2e tests


openvidu-components: Updated testapp 


openvidu-components: Enabled streaming input wehn module is disabled


openvidu-components: Updated e2e tests


openvidu-components: Updated docs


openvidu-components: Moved streaming directive to its component 

Moved streaming directive to streaming component instead of activities component 
openvidu-components: Updated testapp 


openvidu-components: Made streaming service public


ci: Send branch name in event dispatch


openvidu-components: Updated test app
2022-12-23 16:19:01 +01:00
pabloFuente 216817b675 openvidu-test-e2e: update restart command for OpenVidu Pro E2E tests. Add custom language STT test 2022-12-23 14:11:18 +01:00
pabloFuente d19d5d6dcb Add DOCKERHUB_PRIVATE_REGISTRY_PASSWORD env variable 2022-12-23 14:06:57 +01:00
cruizba 799e875dd7 deployment: OPENVIDU_UPGRADABLE_VERSION to 2.25 2022-12-22 13:59:45 +01:00
jenkinsopenvidu 4d7e33ea5e Update to version v2.25.0 2022-12-22 12:41:39 +00:00
cruizba 29b6b17787 deployment: Bumb docker-compose.yml to 2.25.0 2022-12-22 13:28:58 +01:00
openvidu fdeb2ba1a2 Update openvidu-java-client to version v2.25.0 2022-12-22 12:00:12 +00:00
jenkinsopenvidu 73e8434585 Update openvidu-node-client to version v2.25.0 2022-12-22 11:53:02 +00:00
cruizba 276fe225b0 Update openvidu recording version 2022-12-22 12:48:41 +01:00
cruizba 7cdf095e01 deployment: Update OPENVIDU_PRO_AWS parameters .env description 2022-12-22 12:40:24 +01:00
pabloFuente be202a18b9 openvidu-test-e2e: fix restart method 2022-12-22 11:25:11 +01:00
pabloFuente fb934a56ba openvidu-test-e2e: extend restart method of OpenVidu Pro E2e tests 2022-12-22 02:04:51 +01:00
pabloFuente 2cb4211555 openvidu-test-e2e: fix STT tests 2022-12-20 20:22:50 +01:00
pabloFuente 34b9908ae3 openvidu-test-e2e: test error conditions with AWS and Azure 2022-12-20 17:34:03 +01:00
Carlos Santos 5349177f14 openvidu-components: Updated captionsLangOptions api
Replaced ISO attribute by lang with the aim of matching the openvidu-browser  api
2022-12-20 11:47:25 +01:00
pabloFuente 316b14561f openvidu-test-e2e: add tests for STT load/unloading lang models 2022-12-20 01:12:53 +01:00
pabloFuente 038d6ccd29 openvidu-server: protect from NullPointer on KurentoParticipant#getPublisherStreamId 2022-12-16 16:33:10 +01:00
pabloFuente d6acd0d321 openvidu-browser: catch unhandled error on RTCPeerConnection#addIceCandidate 2022-12-16 16:32:45 +01:00
pabloFuente 273520cb2d openvidu-test-e2e: set "on_demand" as vosk model load strategy where required 2022-12-15 20:08:05 +01:00
pabloFuente 852b03267b openvidu-test-e2e: extend OpenVidu Pro E2E STT tests 2022-12-15 18:07:46 +01:00
cruizba 41ca11f9df deployment: Add OPENVIDU_PRO_DOCKER_REGISTRIES for private docker repositories usage in media nodes 2022-12-15 17:37:50 +01:00
Carlos Santos 5d38aaeddf openvidu-components: Renamed recording-activity component folder 2022-12-14 13:31:10 +01:00
Carlos Santos 682a51d11a openvidu-components: Added recordingActivity directive e2e test 2022-12-14 13:08:30 +01:00
Carlos Santos 8aba9d0610 openvidu-components: Fixed bug with recordingActivity
Fixed a typo with recordingActivity attribute directive of ov-activities-panel
2022-12-14 13:07:47 +01:00
Carlos Santos a48a6ffa32 openvidu-components: Fixed onSessionCreated event sending
Fired onSessionCreated event immediately after its creation
2022-12-14 12:47:37 +01:00
pabloFuente c924cb9ab5 Recording layout: better way of getting WS protocol 2022-12-13 13:26:03 +01:00
pabloFuente ca1dd07f08 Recording layout: dynamic WS protocol depending on current location.protocol 2022-12-13 13:24:39 +01:00
pabloFuente ea724a8db0 openvidu-server: generateErrorResponse as a static method of SessionRestController 2022-12-13 12:02:34 +01:00
Pablo Fuente Pérez f66d642c2a
Delete ROADMAP.md 2022-12-09 11:15:55 +01:00
pabloFuente c2478d806b openvidu-server: remove deprecated WebMvcConfigurerAdapter 2022-12-05 13:34:28 +01:00
pabloFuente d5d037be53 OpenVidu Server Dashboard CE: change tokens API to connections API 2022-12-02 12:58:06 +01:00
pabloFuente 36c24fab7c OpenVidu Server Dashborad update to Angular 15 2022-12-02 12:46:12 +01:00
pabloFuente 763c7cba26 openvidu-server dashboard: upgrade to Angular 14 2022-12-01 16:24:54 +01:00
pabloFuente e993cc7eb3 Remove unnecessary io.netty exclusion from pom.xml 2022-12-01 13:11:12 +01:00
pabloFuente adc102712e Update .gitignore 2022-12-01 12:49:58 +01:00
pabloFuente e1c4a44cae Update maven.compiler Java version configuration 2022-12-01 12:37:09 +01:00
pabloFuente 759127204f Remove net.bytebuddy unnecessary exclusions from pom.xml 2022-12-01 11:54:41 +01:00
pabloFuente f83e4fa7b6 openvidu-test-browsers: use deprecated setScriptTimeout 2022-12-01 11:54:00 +01:00
pabloFuente dc227a212c openvidu-test-browsers: udpate EdgeUser to new scriptTimeout API 2022-11-30 19:17:57 +01:00
pabloFuente 62794257e3 Update selenium dependency 2022-11-30 18:28:54 +01:00
pabloFuente e1aaf91053 Update pom.xml plugin versions 2022-11-30 16:29:51 +01:00
pabloFuente 72b8e78dff openvidu-server: update reconnection handler to catch uncaught KurentoException 2022-11-30 15:59:44 +01:00
pabloFuente 2f41d27b62 Update testcontainers pom.xml version 2022-11-30 11:44:40 +01:00
pabloFuente ef2189bada Reorder pom.xml dependencies 2022-11-30 11:38:21 +01:00
pabloFuente 9ee5a75e74 Delete outdated unirest dependency (use Apache Http Client) 2022-11-29 23:56:41 +01:00
pabloFuente 9522e1ff63 Update pom.xml dependencies 2022-11-29 23:19:11 +01:00
pabloFuente dadcfc6f77 Remove openvidu-pro-test-e2e Docker container from commonFunctions.groovy script 2022-11-29 18:53:15 +01:00
pabloFuente 6ef6faca86 openvidu-test-e2e: change Crash service STT test name 2022-11-29 18:36:41 +01:00
pabloFuente af23890f20 ci-scripts: add maven.artifact.thread=1 flag to mvn install command 2022-11-29 18:36:22 +01:00
pabloFuente b2158ce5e8 openvidu-testapp: update package-lock.json 2022-11-28 15:37:43 +01:00
pabloFuente 8347e521cd openvidu-test-e2e: update TestApp Pro tests to new version of JUnit 2022-11-27 18:15:32 +01:00
pabloFuente 1706491538 Fix integration tests updating properties file 2022-11-27 17:54:35 +01:00
pabloFuente b5afa436f6 openvidu-test-e2e: update to new JUnit version 2022-11-27 17:34:48 +01:00
pabloFuente 3ed03167ca openvidu-test-browsers: update to support new JUnit version 2022-11-27 17:33:46 +01:00
pabloFuente fe2f668d58 openvidu-server: update unit and integration tests to new JUnit version 2022-11-27 17:33:46 +01:00
pabloFuente 13f404d072 Update Spring Boot to 2.7.5 2022-11-27 17:33:46 +01:00
Carlos Santos 86d1260395 openvidu-angular: Fixed webcomponents e2e test 2022-11-25 12:24:55 +01:00
Carlos Santos c6cf3b91cd openvidu-components: Added e2e test pro features 2022-11-24 18:12:40 +01:00
csantosm 370b3af37e openvidu-components: Allowed custom captions lang options 2022-11-24 17:22:00 +01:00
Carlos Santos c0d8f24533 openvidu-components: Added lang and captionsLang directive tests 2022-11-24 14:13:18 +01:00
Carlos Santos c8884bc6e7 openvidu-components: Fixed e2e tests 2022-11-24 13:32:10 +01:00
Carlos Santos 7105fe448d openvidu-components: Added PRO feature e2e tests 2022-11-24 11:57:21 +01:00
Carlos Santos 595ad9564e openvidu-webcomponent: Marked as PRO feature 2022-11-24 11:53:44 +01:00
pabloFuente b0f1db5770 openvidu-server: update janino. Remove unnecessary springboot dependencies 2022-11-24 03:05:58 +01:00
pabloFuente 8caeb23c53 openvidu-server: provide required DockerHttpClient in LocalDockerManager 2022-11-24 01:48:21 +01:00
pabloFuente e8218b3fd8 Update Java dependencies. Remove commons-validator and powermock-module-junit4 2022-11-24 01:46:20 +01:00
pabloFuente d49ec43236 Add massive session e2e test 2022-11-23 22:59:43 +01:00
pabloFuente bdb34e7221 openvidu-test-app: update .gitignore 2022-11-23 17:51:00 +01:00
Carlos Santos 3cc28fa9f5 Merge branch 'openvidu-testapp-update' 2022-11-23 17:29:18 +01:00
Carlos Santos f709eb8da9 openvidu-testapp: Updated to Angular 14
ci: Updated testapp building 

openvidu-testapp: Added missing HTTPClient import

openvidu-testapp: Updated circular references stringifying a JSON
2022-11-23 17:15:34 +01:00
Carlos Santos 3af985f571 Revert "openvidu-components: Removed HTTPClient dependency"
This reverts commit bc9f3b6a6a.
2022-11-23 13:57:24 +01:00
Carlos Santos bc9f3b6a6a openvidu-components: Removed HTTPClient dependency 2022-11-23 13:46:54 +01:00
Carlos Santos 2985593391 openvidu-components: Updated dependencies 2022-11-22 17:05:44 +01:00
pabloFuente 13a0616619 openvidu-node-client: update dependencies. Update TypeDoc 2022-11-22 16:58:43 +01:00
Carlos Santos c1a8940270 openvidu-components: Updated package-lock.json 2022-11-22 16:55:40 +01:00
Carlos Santos dbd2e4a506 Merge branch 'ov-components-stt-reconnection' 2022-11-22 16:54:20 +01:00
Carlos Santos 4c0b829a08 openvidu-components: Avoided duplicated errors 2022-11-22 16:52:51 +01:00
Carlos Santos 0b7fefd906 openvidu-components: Added reconnection when STT disconnected 2022-11-22 16:50:32 +01:00
pabloFuente b39f509562 openvidu-browser: update dependencies. Update TypeDoc to 0.24 2022-11-22 16:15:07 +01:00
pabloFuente 01e5a492c4 Update openvidu-test-e2e image to Ubuntu 22.04 2022-11-22 15:08:05 +01:00
pabloFuente f728dd848a Fix openvidu-e2e-tests for NPM 18 with NODE_OPTIONS=--openssl-legacy-provider 2022-11-21 14:27:07 +01:00
pabloFuente a1d040e61a openvidu-ce-test.yml: Env variable TEST_IMAGE 2022-11-21 14:12:17 +01:00
Pablo Fuente Pérez 2389ce929f
Update openvidu-ce-test.yml 2022-11-21 14:00:53 +01:00
Carlos Santos 54cbe84812 openvidu-components: Updated npm doc scripts 2022-11-21 13:10:06 +01:00
Carlos Santos 453c9576ea openvidu-components: Updated build doc script
Replaced testapp README by openvidu-angular README with the aim of showing it on the docs. (Compodoc shows the README file which stay on the main path)
2022-11-21 12:34:14 +01:00
Carlos Santos 170c835e3b openvidu-components: Updated docs
Updated build scripts docs
Added description for token parameter
2022-11-21 12:27:45 +01:00
cruizba d19a8406bf deployment: install_media_node.sh - Pull coturn in media nodes 2022-11-18 21:16:52 +01:00
pabloFuente 1673a1b38c Update OPENVIDU_UPGRADABLE_VERSION to 2.24 in deployment scripts 2022-11-17 19:16:38 +01:00
jenkinsopenvidu deb10d2aa2 Update to version v2.24.0 2022-11-17 18:05:30 +00:00
pabloFuente 92225253fa Update Docker deployment files to 2.24.0 2022-11-17 18:31:18 +01:00
openvidu 6b82d6371d Update openvidu-java-client to version v2.24.0 2022-11-17 17:02:40 +00:00
pabloFuente b346f031c1 openvidu-testapp: update openvidu-node-client to 2.24.0 2022-11-17 17:58:22 +01:00
jenkinsopenvidu 58737cc887 Update openvidu-node-client to version v2.24.0 2022-11-17 16:57:16 +00:00
pabloFuente 887fdf6ea9 openvidu-components: update onNodeCrashed doc 2022-11-17 14:51:45 +01:00
cruizba 6947fe87cb ci: Get gateway IP by using subnet value from docker network inspect 2022-11-17 14:11:45 +01:00
pabloFuente ab1f7c4688 openvidu-test-e2e: remove path from stt service kill command 2022-11-17 14:06:59 +01:00
pabloFuente 94940dc247 openvidu-test-e2e: kill STT process inside DIND 2022-11-17 13:57:55 +01:00
cruizba f812b4d1be deployment: Update openvidu-recording to 2.24.0 2022-11-17 13:12:45 +01:00
cruizba 0c4355f9c7 deployment: Open port 4000. Update speech to text AMI 2022-11-17 13:12:45 +01:00
pabloFuente 1b5979e8f7 Manage stt-test.wav as a fake audio file instead of a fake video file 2022-11-17 11:37:28 +01:00
pabloFuente 078c13ac80 Add stt-test.wav file for STT e2e tests 2022-11-17 11:24:04 +01:00
pabloFuente 4ea501031e openvidu-test-e2e: fix Virtual Background test 2022-11-17 10:56:32 +01:00
pabloFuente 444f898125 openvidu-test-e2e: test STT reconnection after crash 2022-11-16 15:41:45 +01:00
pabloFuente 1652311448 openvidu-browser: restore automatic Stream reconnection on ICE errors 2022-11-16 13:16:32 +01:00
Carlos Santos 6ab6c22158 openvidu-components: Updated captions e2e test 2022-11-16 12:15:21 +01:00
Carlos Santos 41e9cc95eb openvidu-components: Displayed dialog on PRO features 2022-11-16 10:55:36 +01:00
pabloFuente 14debd515c openvidu-test-e2e: Crash STT service test 2022-11-15 19:25:53 +01:00
pabloFuente 75eeda4aee New RPC event "speechToTextDisconnected" 2022-11-15 19:25:40 +01:00
Carlos Santos b9fb8942c5 openvidu-components: Printed openvidu exception 2022-11-15 17:31:51 +01:00
Carlos Santos 495572035f openvidu-components: Hidden captions when OpenVidu is CE 2022-11-15 17:31:09 +01:00
pabloFuente b51a502cc9 Update STT tests to check consecutive recognized STT events 2022-11-15 16:44:10 +01:00
pabloFuente 6576f40db8 openvidu-browser: restrict Device.kind string type 2022-11-15 15:49:46 +01:00
pabloFuente fc93566e04 openvidu-browser: add Types for Events 2022-11-15 15:28:55 +01:00
pabloFuente a61fb64707 STT E2E Tests: simplify subscribe actions in all tests 2022-11-14 14:19:22 +01:00
pabloFuente 4aa1813383 openvidu-browser: dispose remote Connection on connectionDestroyed event 2022-11-14 12:56:37 +01:00
Carlos Santos b2426149c6 openvidu-components: Improved algorithm for showing captions 2022-11-11 16:48:13 +01:00
pabloFuente 55c97c3d78 openvidu-test-e2e: make OPENVIDU_PRO_SPEECH_TO_TEXT prop configurable 2022-11-11 14:24:06 +01:00
pabloFuente 8aad8948bf openvidu-server: hide secret properties on log 2022-11-11 13:37:45 +01:00
pabloFuente 286891c6fc openvidu-test-e2e: STT and composed recording test 2022-11-11 13:08:27 +01:00
pabloFuente fc275452ec openvidu-server: fix null pointer for STT participant with incompatible openvidu-browser 2022-11-11 13:07:54 +01:00
Carlos Santos e34ad74b8f openvidu-components: Added npm script for serve with ssl 2022-11-10 18:09:52 +01:00
pabloFuente a689f0009f openvidu-test-e2e: add sleeps after closing dialogs 2022-11-10 16:59:06 +01:00
pabloFuente 3276b9d26e openvidu-test-e2e: STT memory leak test 2022-11-10 15:07:01 +01:00
cruizba 0919f04fa4 deployment: Update nginx version and bump deployment versions 2022-11-10 14:44:33 +01:00
cruizba b93b8dd85e deployment: Nginx security improvements:
- Disable TLSv1.0 and TLSv1.1 by default.
- Use intermediate SSL ciphers following mozilla SSL generator: https://ssl-config.mozilla.org/#server=nginx&version=1.23.1&config=intermediate&openssl=1.1.1&guideline=5.6
- Enable HSTS by default
2022-11-10 14:43:03 +01:00
pabloFuente 8846c14157 openvidu-test-e2e: admit +0/+1 value difference in port view height 2022-11-10 14:34:40 +01:00
pabloFuente c8b445b7d2 openvidu-test-e2e: add STT tests 2022-11-10 14:00:00 +01:00
pabloFuente 7820e02574 openvidu-testapp: fix video codec retrieval 2022-11-10 13:40:17 +01:00
pabloFuente 3ad506e01a openvidu-test-e2e: update OpenViduEventManager to support user specific targets 2022-11-10 13:01:18 +01:00
cruizba 78cdd2442d Revert "openvidu-node-client: Fix upstream depedency bumping typescript to 3.9.7"
This reverts commit 1ac3660263.
2022-11-10 00:58:29 +01:00
cruizba 1ac3660263 openvidu-node-client: Fix upstream depedency bumping typescript to 3.9.7 2022-11-09 22:50:25 +01:00
Carlos Santos 4cd7369ff6 openvidu-components: Improved STT unsubscription
Unsubscribed from STT only for remote streams and camera types
2022-11-09 14:05:08 +01:00
Carlos Santos 2fa5d05c2b openvidu-components: Fixed bug with captions lang initialization 2022-11-09 13:31:40 +01:00
Carlos Santos 4be4b9695b openvidu-components: Fixed captions lang update
Updated captions lang only when it is different than older one
2022-11-09 12:47:29 +01:00
Carlos Santos 80a0f16778 openvidu-components: Removed token service
Moved all tokens logic to openvidu service
2022-11-09 10:35:48 +01:00
Carlos Santos d4cfd3893a openvidu-components: Changed language only when captions are enabled 2022-11-09 10:08:37 +01:00
Carlos Santos a8e0fcfb79 openvidu-components: Subscribe to STT when captions opened 2022-11-08 15:29:06 +01:00
pabloFuente c769ddd02d openvidu-test-e2e: fix OpenViduEventManager 2022-11-08 15:03:00 +01:00
pabloFuente 0621f205c5 openvidu-test-e2e: identify testapp user on each openvidu-browser event 2022-11-08 14:20:42 +01:00
pabloFuente 6bc8c31af1 openvidu-browser: fix RPC calls to STT (param connetionIds to connectionId) 2022-11-07 14:14:25 +01:00
pabloFuente 0d73bdc462 openvidu-server: simplify STT operations with single a connectionId 2022-11-07 13:35:35 +01:00
Carlos Santos ce4b783ef0 openvidu-components: Stored virtual background in local storage
Saved background in use in local storage for reapplying it at future meetings
2022-11-07 11:48:43 +01:00
Carlos Santos fb5c56cd87 openvidu-components: Added fault tolerant support
On media node crashed, openvidu-copmponents emits an event for requesting new tokens to the client.
2022-11-07 11:45:15 +01:00
pabloFuente dd62c033df openvidu-testapp: move STT button to stream dialog 2022-11-04 12:00:32 +01:00
Carlos Santos 4d80f823b4 openvidu-components: Updated settings panel style on mobile devices 2022-11-03 16:18:06 +01:00
Carlos Santos 0341470fc0 openvidu-components: Updated testapp 2022-11-03 16:04:20 +01:00
cruizba 79f1580560 deployment: Fix some typos of speech to text parameters at .env files 2022-11-03 12:53:47 +01:00
Carlos Santos ec7e915ee1 openvidu-components: Updated to Angular 14 2022-11-03 12:03:34 +01:00
cruizba 5f73380afa deployment: Speech to text properties added to .env 2022-11-03 11:29:16 +01:00
Carlos Santos 610f328b41 openvidu-components: Updated package-lock.json 2022-11-03 11:16:58 +01:00
Carlos Santos d360bb99e2 openvidu-components: Added e2e test for testing url message 2022-11-03 11:16:15 +01:00
Carlos Santos a61f843083 openvidu-components: Updated test app 2022-11-02 15:54:18 +01:00
Carlos Santos 9173918ce4 openvidu-components: Fixed bug when panel changed in Angular 14 2022-11-02 13:30:06 +01:00
Carlos Santos 42279d557d openvidu-components: Reapplied background on video replace track 2022-11-02 12:26:00 +01:00
pabloFuente f5fc739ea1 Update OpenVidu Editions links 2022-11-02 12:17:44 +01:00
pabloFuente 0e9ae092e5 openvidu-browser: add new StreamPropertyChanged for audioTrack and videoTrack 2022-11-02 12:11:11 +01:00
Carlos Santos 48f20ec64f openvidu-components: resubscribe to STT only if streamManager exists 2022-10-31 14:15:58 +01:00
Carlos Santos d68326a374 openvidu-components: Subscribed to STT only for camera type 2022-10-31 13:40:39 +01:00
Carlos Santos 8925d09bd6 openvidu-components: initialize captions lang checking local storage 2022-10-31 13:39:16 +01:00
Carlos Santos 103ae1fd54 openvidu-browser: Downgraded event info logs to debug level 2022-10-31 12:52:13 +01:00
cruizba f1c65213df deployment: Typo - Add service to 'speech-to-text' docker image name 2022-10-30 13:31:44 +01:00
cruizba a49c35ac7d deployment: Add speech to text service 2022-10-30 13:17:28 +01:00
Carlos Santos 0e55ac35bc openvidu-components: Updated panel settings
Added text description in captions section and other minors styles improvements
2022-10-28 14:20:28 +02:00
Carlos Santos bae861e2ce openvidu-components: Added e2e test without media devices 2022-10-27 17:52:02 +02:00
Carlos Santos 36dad0c86d openvidu-components: Refactored device service 2022-10-27 17:44:47 +02:00
pabloFuente 46ab59f4b2 openvidu-server: new Error code SERVICE_NOT_ENABLED_ERROR_CODE 2022-10-27 16:14:30 +02:00
Carlos Santos 98ecdc278e openvidu-components: Improved UI when media devices are not available 2022-10-27 13:32:29 +02:00
Carlos Santos 1898057e2a openvidu-components: Fixed white screen without media devices 2022-10-27 12:49:52 +02:00
cruizba fffc100623 deployment: Add new call properties 2022-10-26 18:03:45 +02:00
Carlos Santos 7ba8d67db6 openvidu-components: Added caption e2e test 2022-10-26 14:17:12 +02:00
Carlos Santos 2aec4b9fab openvidu-components: Added captions 2022-10-26 12:19:03 +02:00
pabloFuente 370f7b015f openvidu-client: add "lang" to ProtocolElements 2022-10-26 11:47:28 +02:00
pabloFuente 7f9b879d45 openvidu-testapp: invert Speech To Text icons 2022-10-25 13:06:48 +02:00
pabloFuente ce869588ec openvidu-testapp: default STT lang to 'en-US' 2022-10-24 14:16:46 +02:00
pabloFuente 5a9954c614 openvidu-server: added method ConfigRestController#hideSecret 2022-10-24 13:46:59 +02:00
pabloFuente c865b70c40 openvidu-browser: subscribeToSpeechToText param documentation 2022-10-21 12:40:05 +02:00
pabloFuente 9a5cf628d0 openvidu-testapp: provide lang parameter to subscribeToSpeechToText method 2022-10-21 11:20:28 +02:00
pabloFuente 38a8681d17 'lang' parameter in subscribeToSpeechToText method 2022-10-21 10:32:00 +02:00
pabloFuente 8a8cce27f5 openvidu-testapp: update openvidu-node-client to 2.23.0 2022-10-20 13:29:58 +02:00
pabloFuente fe749d40c0 openvidu-server: same public ID in Token and Connection for insecure participants 2022-10-20 12:25:07 +02:00
pabloFuente ed82ab1241 openvidu-test-browsers: add "chromeFakeAudio" 2022-10-19 12:45:58 +02:00
pabloFuente cc8ac8d99d openvidu-browser: protect onParticipantUnpublished upon undefined Connection.stream 2022-10-19 12:44:04 +02:00
Carlos Santos 1ece085349 openvidu-components: Updated testapp 2022-10-19 12:30:19 +02:00
Carlos Santos df128e0591 openvidu-components: Clean code 2022-10-19 12:29:02 +02:00
Carlos Santos fd6a076f55 openvidu-components: Refactored e2e library tests 2022-10-18 16:47:34 +02:00
Carlos Santos 5d8f4033be openvidu-components: Refactored webcomponent e2e tests 2022-10-18 12:01:21 +02:00
pabloFuente 9defcf4e87 openvidu-browser: final SpeechToTextEvent format 2022-10-17 12:27:23 +02:00
Carlos Santos d4cbc67836 openvidu-components: Replaced selenium image by browserless
Significantly reduced the e2e tests time using browserless chrome instead of selenium standalone
2022-10-17 11:47:17 +02:00
csantosm 626043c9e9 openvidu-components: Parallelized e2e test 2022-10-15 00:05:01 +02:00
Carlos Santos 6395e74f85 openvidu-components: Fixed e2e tests 2022-10-14 16:44:59 +02:00
Carlos Santos a4c2955dd4 openvidu-components: Fixed UI glitches on iPhones 2022-10-14 14:46:32 +02:00
Carlos Santos 92fd9cd634 openvidu-components: Added e2e test case 2022-10-14 13:52:35 +02:00
Carlos Santos fd99fb27f9 openvidu-components: Elevate an event on device muting 2022-10-14 13:38:36 +02:00
Carlos Santos 3d0370017a openvidu-components: Improved poster animation 2022-10-14 13:38:36 +02:00
cruizba 12e5a8b9d9 deployment: Add coturn to mono-node deployment 2022-10-13 12:10:11 +02:00
pabloFuente cf15f9f7b6 openvidu-server: manage STT participant as an invisible one 2022-10-10 18:40:25 +02:00
pabloFuente b31b612954 openvidu-server: differentiate onSubscribe handler 2022-10-10 14:37:35 +02:00
pabloFuente 37073bd0ec openvidu-browser: speechToText to speechToTextMessage 2022-10-10 12:04:17 +02:00
pabloFuente d700dd3e97 Speech-To-Text base support 2022-10-10 11:45:27 +02:00
pabloFuente 9fe3a6856c openvidu-testapp: add speech-to-text buttons to videos 2022-10-09 13:14:05 +02:00
Carlos Santos 98a1ea0cd2 openvidu-components: Updated README 2022-10-07 16:40:25 +02:00
Carlos Santos 356784d473 openvidu-components: Updated e2e test and Angular dependencies 2022-10-07 16:32:03 +02:00
Carlos Santos 98e0f20dc0 ci: Updated selenium on ov-components workflow 2022-10-07 15:56:47 +02:00
Carlos Santos d0a9ad0e67 openvidu-components: Updated e2e dependencies 2022-10-07 15:48:23 +02:00
cruizba 875763f357 deployment: Update OpenVidu PRO and media-node-controller to 2.24.0-beta1 2022-10-07 14:35:13 +02:00
cruizba 637fe69b1d deployment: Set different recordings directory for media nodes with mono-node deployment 2022-10-07 13:55:56 +02:00
cruizba 56b22841ac openvidu-server: Adapt config.getOpenViduRecordingPath to have different recording paths in Media nodes for OpenVidu PRO/ENTERPRISE 2022-10-07 13:55:56 +02:00
Carlos Santos b489485c42 openvidu-components: Updated docs 2022-10-07 13:35:59 +02:00
pabloFuente 600c3d778d openvidu-java-client: fix test 2022-10-06 13:07:37 +02:00
pabloFuente 3b72c8f52d openvidu-recording Docker image: add Ubuntu 22.04-based image 2022-10-06 11:25:12 +02:00
pabloFuente 74e68ea8b1 openvidu-recording Docker image: add new Chromium flags 2022-10-06 11:15:52 +02:00
Carlos Santos e2d8a510e6 openvidu-components: Returned same url in recording pipe 2022-10-05 13:58:17 +02:00
Carlos Santos 5f0fe95d69 ci: Fixed curl request for sending commit data 2022-10-05 12:33:41 +02:00
Carlos Santos 7d88c1fafb ci: Replaced gh cli command by curl request
gh cli does not suport object as parameters
2022-10-05 11:54:42 +02:00
Carlos Santos 0a2a89e375 ci: Set default value if input is empty 2022-10-05 10:28:51 +02:00
Carlos Santos f8bb589caa ci: Added workflow path in openvidu-components-e2e 2022-10-05 10:16:29 +02:00
Carlos Santos a652754fc5 ci: Added commit message and id in dispatch event 2022-10-05 10:12:42 +02:00
Carlos Santos da6388cc3c ci: Fixed typo in ov-components e2e 2022-10-04 23:23:25 +02:00
Carlos Santos 4bdb6f303c ci: ignored components yml on CE workflow 2022-10-04 21:55:46 +02:00
Carlos Santos 70916677de github: Updated dispatch event 2022-10-04 21:53:11 +02:00
Carlos Santos e26fdf723c github: Fire a custom event on openvidu-components job 2022-10-04 16:59:20 +02:00
pabloFuente 4e299f1ae6 openvidu-java-client: allow http and https URI protocols on rtspUri parameter 2022-10-04 13:11:50 +02:00
cruizba f886eb217c deployment: Add stop container command in opevidu-pro mono node 2022-10-04 10:38:43 +02:00
cruizba 64e603e047 deployment: Add mononode openvidu pro deployment files 2022-10-04 10:30:45 +02:00
Carlos Santos 2595afd722 openvidu-components: Updated admin dashboard view 2022-09-27 13:02:56 +02:00
csantosm 6916f1525d openvidu-components: Added e2e test 2022-09-23 16:37:40 +02:00
csantosm 0ec4d828b8 openvidu-components: Updated chromedriver dependency 2022-09-23 16:37:40 +02:00
cruizba 837c1d5af7 openvidu-components: Set version 2.23.1 2022-09-23 14:17:38 +02:00
csantosm 49ca194c07 openvidu-components: Updated openvidu-browser peerDependency 2022-09-23 13:35:16 +02:00
csantosm d1e6aeab36 Revert "openvidu-components: Updated peer depencencies versions"
This reverts commit 4a08a569b5.
2022-09-23 13:02:16 +02:00
csantosm f8d76f647c openvidu-call: Fixed testing OpenVidu URL 2022-09-23 11:43:04 +02:00
cruizba 5acd93ecd0 Update OPENVIDU_UPGRADABLE_VERSION to 2.23 2022-09-22 00:22:29 +02:00
jenkinsopenvidu bf427ba4df Update to version v2.23.0 2022-09-21 20:47:30 +00:00
cruizba 48192b3f50 Update docker-compose.yml tag versions to 2.23.0 2022-09-21 17:23:13 +02:00
openvidu ef9ad28d56 Update openvidu-java-client to version v2.23.0 2022-09-21 14:47:26 +00:00
cruizba 154cdc2db6 deployment: Update nginx version to 1.23.1 2022-09-21 15:18:56 +02:00
pabloFuente 7e5a8afb48 openvidu-server: show warning log on startup if openvidu-dev container 2022-09-20 16:09:47 +02:00
jenkinsopenvidu ec6106b079 Update openvidu-node-client to version v2.23.0 2022-09-19 16:23:29 +00:00
cruizba 57401acf2b deployment: Remove docker of openvidu-test-app. Update openvidu-dev to 6.18.0 2022-09-19 17:56:15 +02:00
cruizba 420da79ea4 Change to openvidu-server-kms to openvidu-dev 2022-09-19 17:21:33 +02:00
cruizba c4244cf397 openvidu-server: Update version.kurento from 6.18.0-SNAPSHOT to 6.18.0 2022-09-19 13:10:14 +02:00
Carlos Santos 4a08a569b5 openvidu-components: Updated peer depencencies versions
Used ranges with the aim of support new Angular versions
2022-09-19 12:20:32 +02:00
Carlos Santos 3f0e96ac35 openvidu-components: Disabled captions feature preview 2022-09-19 12:19:26 +02:00
Carlos Santos cc5110dec3 openvidu-components: Updated README 2022-09-19 10:48:09 +02:00
cruizba ace1a1f5a4 deployment: Update script of upgrading
- Throw error while upgrading between different OpenVidu Editions.
- Move coturn volume to rollback directory while upgrading.
2022-09-16 19:09:41 +02:00
cruizba 7f1684fb78 openvidu-server,deployment: Update kurento-media-server to 6.18.0 2022-09-16 16:43:49 +02:00
cruizba f124f0a661 openvidu-server, deployment: Update recording version to 2.23.0 2022-09-14 12:56:33 +02:00
cruizba ca08e16ac4 deployment: Deprecate old API by default. 2022-09-14 12:04:57 +02:00
csantosm 0865aaa97f openvidu-components: Fixed recording extension 2022-09-07 12:44:47 +02:00
csantosm 74cfa1e567 openvidu-components: Made prejoin page responsive 2022-09-07 12:01:04 +02:00
csantosm b20da507c3 openvidu-components: Updated README 2022-09-07 11:55:27 +02:00
pabloFuente bd3ad19cab openvidu-server: rename property DEV_CONTAINER to FORCE_PLAIN_HTTP 2022-08-26 11:46:09 +02:00
pabloFuente a2c6c8b4eb Rename openvidu-js-java(/node) to openvidu-roles-java(/node) 2022-08-26 11:45:25 +02:00
csantosm 09eeaf4b88 openvidu-components: Updated webcomponent e2e 2022-08-18 15:58:07 +02:00
csantosm 27e686271e openvidu-components: Fixed replaced track after mute camera
openvidu-browser needs a mediaStreamTrack param if a custom was assigned before mute video track releasing resources.
2022-08-18 13:51:55 +02:00
csantosm 7296057184 openvidu-browser: Added missing return after refactoring 2022-08-18 11:11:46 +02:00
csantosm 2ce54f577b openvidu-browser: Added common format config file 2022-08-17 18:05:32 +02:00
csantosm 128dd3cfed openvidu-components: Fixed bug requesting devices 2022-08-17 17:54:39 +02:00
csantosm c0e45e8df7 openvidu-browser: Refactored some methods for them to use async/await
Updated initPublisher and getUserMedia
2022-08-17 17:50:01 +02:00
csantosm 1704bb2c8c openvidu-components: Fixed bug listing recordings on admin page 2022-08-17 12:46:49 +02:00
csantosm 6905142a4a openvidu-components: Fixed typo 2022-08-17 12:46:21 +02:00
csantosm 95180b669f openvidu-components: Updated admin dashboard and fixed linters 2022-08-11 17:24:15 +02:00
csantosm 30aa871075 openvidu-components: updated dependencies 2022-08-11 17:24:15 +02:00
pabloFuente d878c3f5eb Rename docker container openvidu-server-kms to openvidu-dev 2022-08-08 23:49:22 +02:00
pabloFuente 064887f7d8 openvidu-server: remove deprecated property OPENVIDU_DOMAIN_OR_PUBLIC_IP 2022-08-08 22:32:06 +02:00
pabloFuente a729cea252 openvidu-components-angular: update all code snippets to match tutorials 2022-08-08 18:53:38 +02:00
pabloFuente 5a5fcc4d5e openvidu-browser: fix typo. Add sample codes to Events 2022-08-04 17:19:46 +02:00
csantosm dbf8a84981 openvidu-components: Used proxy for requesting the recording thumbnail 2022-08-03 18:38:37 +02:00
cruizba 6b27a44542 openvidu-test-e2e: Install docker-compose in docker test image 2022-07-28 02:17:52 +02:00
pabloFuente 755de51c2a openvidu-testapp: revert unpublish video change 2022-07-27 18:13:06 +02:00
Juan Navarro 4a846c5f56 openvidu-browser: Node.js platform: Extend system requirements 2022-07-27 16:53:25 +02:00
Juan Navarro 2b70c12be6 openvidu-browser: Node.js platform: Use `globalThis` instead of `window`
While `window` is specific to the web browser, and `global` is specific
to Node.js, the standard `globalThis` global variable is common to both
platforms.

Thus, to make openvidu-browser more portable to Node.js, it's better to
use the common name.

More info:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis
2022-07-27 16:53:25 +02:00
Juan Navarro 71b0e6ca43 openvidu-browser: Node.js platform: ConsoleLogger constructor
Doesn't look right that the argument is ignored and instead global
state is modified. The code later passes in `window.console` anyway,
so this doesn't really change the behavior.

However this change is important for Node.js compatibility, where
`window` is not defined.
2022-07-27 16:53:25 +02:00
Juan Navarro b5d7371eed openvidu-browser: Reformat function checkSystemRequirements()
It was difficult to read and modify, and the "if/else" return logic
could be simplified.

Also the comments were outdated. Remove them and let the code speak
by itself.
2022-07-27 16:53:25 +02:00
pabloFuente 80ed795c65 openvidu-testapp: use plain openvidu-server HTTP 2022-07-27 15:58:57 +02:00
pabloFuente ee2c3d009b openvidu-server: public URL to plain HTTP if DEV_CONTAINER 2022-07-27 12:07:45 +02:00
pabloFuente fd83b6693a openvidu-browser: do not force wss in token 2022-07-26 15:46:53 +02:00
pabloFuente d071529e12 openvidu-node-client: link to Error JS object in TypeDocs 2022-07-18 11:37:40 +02:00
cruizba 4102d5c8c3 ci: Include deprecated AMIs in delete_amis.sh script 2022-07-17 20:57:03 +02:00
csantosm 65ff948354 openvidu-components: Clean tests 2022-07-15 15:55:33 +02:00
csantosm fda25021f2 openvidu-components: make stronger e2e test 2022-07-15 15:20:41 +02:00
csantosm bfb350d3df openvidu-components: Updated documentation 2022-07-15 15:20:13 +02:00
pabloFuente 370a426fa9 openvidu-browser: fix targetElement types on constructors 2022-07-15 10:41:12 +02:00
pabloFuente 215f2828dd openvidu-browser: allow undefined as targetElement property. Typo fix 2022-07-14 16:44:18 +02:00
csantosm 353dd2b545 openvidu-angular: Removed custom service for webcomponent logging 2022-07-14 09:46:30 +02:00
csantosm 1d70791fd9 openvidu-components: Exported only the necessary elements 2022-07-14 09:39:11 +02:00
csantosm 51c8eb27e6 openvidu-components: Added e2e test 2022-07-14 09:38:08 +02:00
csantosm 1122fb8649 openvidu-components: Fixed bug with playing recording
Set a default value if recording extension is undefined.
2022-07-12 11:25:29 +02:00
csantosm 65025c4e33 openvidu-components: Improved prejoin styles 2022-07-11 15:32:36 +02:00
csantosm f93b55818d openvidu-components: Fixed prejoin selectors when is iPhone 2022-07-11 13:05:28 +02:00
csantosm 1f348d2986 openvidu-components: Updated exported components 2022-07-11 12:06:38 +02:00
csantosm e8f110f6b5 openvidu-components: Updated captions component 2022-07-08 15:39:05 +02:00
cruizba 091f53c596 Move lorem-ipsum dependency to library temporarly 2022-07-07 21:34:26 +02:00
cruizba f4b9636d5a Move lorem-ipsum dependency to fix build 2022-07-07 21:10:00 +02:00
csantosm 53d54a682e openvidu-components: Removed unnecessary code after fixed hark
openvidu-browser hark events bug has been fixed so it is not necessary to resubscribe again after audio track is replaced.
2022-07-07 17:47:27 +02:00
pabloFuente ce230f059a openvidu-browser: fix hark events reapplication after Publisher#replaceTrack 2022-07-07 16:49:17 +02:00
pabloFuente b99f387b4e openvidu-browser: init hark events on Publisher#replaceTrack 2022-07-07 14:28:47 +02:00
Pablo Fuente Pérez a04f43e98d
Merge pull request #726 from Flamenco/patch-2
Add space after period.
2022-07-07 07:19:56 -05:00
Pablo Fuente Pérez 4078852503
Merge pull request #739 from OpenVidu/fix_replaceTrack_event
Fixed StreamPropertyChangedEvent when replaced tracks
2022-07-07 07:19:10 -05:00
csantosm 873b52f19c openvidu-components: Updated testapp 2022-07-06 13:55:15 +02:00
csantosm d96edcfec6 openvidu-components: Deleted samples 2022-07-06 13:47:13 +02:00
csantosm b4080fedea openvidu-components: Renamed subtitles components to captions 2022-07-06 13:46:42 +02:00
csantosm 085d659363 openvidu-components: Updated e2e tests 2022-07-06 00:37:28 +02:00
csantosm 95e5e977da openvidu-components: Fixed race condition with session initialization
When prejoin component is disabled, the Session component was initialized before the videoconference component initialization had finished
2022-07-06 00:04:02 +02:00
csantosm 25972260ac openvidu-components: Updated layout elements transitons 2022-07-05 23:59:39 +02:00
csantosm 4fd2fc8595 openvidu-components: Added dev dependencies in testapp 2022-07-05 12:23:55 +02:00
csantosm 0b74590252 openvidu-components: Added preliminary subtitles 2022-07-05 12:17:03 +02:00
csantosm fc7b961010 openvidu-components: Updated layout 2022-07-01 12:50:59 +02:00
csantosm 8f2cfec201 openvidu-components: Fixed recording extension 2022-06-28 21:16:11 +02:00
csantosm 84d3ea1de7 openvidu-components: Updated E2E test 2022-06-28 14:16:53 +02:00
csantosm 6ace61fe75 openvidu-components: Updated test app 2022-06-28 13:16:39 +02:00
csantosm a46502ceca openvidu-components: Improved play and download recordings 2022-06-28 12:47:29 +02:00
csantosm eaed1b3692 openvidu-components: Fixed replace tracks in session 2022-06-24 16:12:36 +02:00
csantosm 03a15d1077 openvidu-browser: Fixed StreamPropertyChangedEvent when replaced tracks 2022-06-24 14:34:59 +02:00
csantosm ea3f16778e openvidu-components: Fixed panel services bugs
Chat panel is not updating when a new message is received. 
Wrong method had been invoked
2022-06-24 12:50:19 +02:00
pabloFuente 556b3a0a2b openvidu-browser: replace setAttribute('playsinline') with playsInline=true 2022-06-23 13:28:00 +02:00
pabloFuente 17ff9105aa openvidu-browser: fix echo when calling Publisher#replaceTrack 2022-06-23 13:23:36 +02:00
csantosm 6269db8978 openvidu-components: Avoided subscribe to recording events if disabled 2022-06-22 14:01:50 +02:00
csantosm fd45988bfc openvidu-components: Updated testapp 2022-06-22 12:42:02 +02:00
csantosm 26f96761cd openvidu-components: Improved play recordings feature 2022-06-22 12:35:31 +02:00
csantosm c71848ec3c openvidu-copmponents: Updated recording and admin dashboard 2022-06-20 17:03:54 +02:00
csantosm b2dc5da33c openvidu-components: Fixed typo showing disconnected error 2022-06-20 17:01:29 +02:00
pabloFuente c37e619dac openvidu-java-client: add method OpenVidu#getActiveSession(String sessionId) 2022-06-20 11:23:15 +02:00
csantosm b283dcd3a2 openvidu-components: Fixed bug updating media devices 2022-06-17 12:50:20 +02:00
csantosm a1d55575fd openvidu-components-e2e: Added settings button test 2022-06-16 15:56:57 +02:00
csantosm 2c200d4d86 openvidu-components: Added missing bg effects directive to webcomponent 2022-06-16 15:56:14 +02:00
csantosm 12ad515e5b openvidu-components: Added settings directive to webcomponent 2022-06-16 15:55:40 +02:00
csantosm c8264fdb1b openvidu-components: Added settings panel for configuring media devices 2022-06-16 14:01:19 +02:00
pabloFuente 3908dfc146 openvidu-java-client: improve default values of Properties 2022-06-16 12:21:11 +02:00
pabloFuente e5fc3927b5 openvidu-java-client: RecordingPropertiesTest 2022-06-15 15:58:10 +02:00
pabloFuente 84f23f6beb openvidu-test-e2e: update Kurento image from 6.16.0 to dev-6.18 2022-06-15 14:12:45 +02:00
pabloFuente 1dd234a928 Update "mediaNode" Recording property 2022-06-15 12:50:56 +02:00
csantosm 57869cb358 openvidu-components: Made toolbar responsive 2022-06-14 13:22:53 +02:00
csantosm d18d37de82 openvidu-components: Emitted event when refresh button is clicked 2022-06-14 12:24:16 +02:00
pabloFuente bb23e65897 openvidu-java-client: fix unit test 2022-06-13 18:32:30 +02:00
pabloFuente 735d4a96bd Move RecordingProperties#fromJson from openvidu-server to openvidu-java-client 2022-06-13 18:20:53 +02:00
csantosm 7e8b6adaad openvidu-components: Hidden bacground service from docs 2022-06-13 14:06:07 +02:00
csantosm 76e27fb5d9 openvidu-components: Updated Readme 2022-06-13 14:06:07 +02:00
csantosm cf77883982 openvidu-components: Updated recording panel 2022-06-13 14:06:07 +02:00
csantosm b133313e44 openvidu-components: Splitted material imports 2022-06-13 14:06:07 +02:00
csantosm e83025f522 openvidu-components: Added translations 2022-06-13 14:06:07 +02:00
csantosm 15a7037b04 openvidu-components: Added admin dashboard 2022-06-13 14:06:07 +02:00
pabloFuente d37809ac5b openvidu-test-e2e: fix OpenVidu SDK fetch test 2022-06-10 12:38:14 +02:00
pabloFuente c6e3875ceb openvidu-server: fix uncaught exception in Token class 2022-06-10 11:57:04 +02:00
pabloFuente b102a44d50 Move ConnectionProperties#fromJson from openvidu-server to openvidu-java-client 2022-06-10 11:54:47 +02:00
pabloFuente a49e1818c0 Move SessionProperties#fromJson from openvidu-server to openvidu-java-client 2022-06-09 17:38:58 +02:00
Carlos Ruiz Ballesteros caa9accf02
Merge pull request #734 from OpenVidu/deployment-logs
Improvements for deployment script "logs" command
2022-06-09 17:27:31 +02:00
csantosm bba03ec8a0 openvidu-components: Implements AfterViewInit in prejoin component 2022-06-09 16:06:51 +02:00
Juan Navarro ac5700cd95
Remove improper usages of SessionProperties.forcedVideoCodecResolved (#737)
forcedVideoCodecResolved is a property that gets automatically assigned
by the server and only used by it; clients don't need to know about its
existence and don't need to use it. Similarly, SessionProperties itself
should not serialize this field.
2022-06-09 15:29:23 +02:00
cruizba a18b15146f ci: Only listen on push master branch and PRs to master 2022-06-09 15:22:54 +02:00
csantosm 91c328b58f openvidu-components: Fixed recording button toolbar
Checked role when the toolbar menu is opened for avoiding deprecated values
2022-06-09 14:45:59 +02:00
csantosm 84bf80c24a openvidu-components: Fixed video blank on iOS devices 2022-06-09 12:28:04 +02:00
csantosm 3c323233a5 openvidu-components: Fixed bug with show mat menu in iPhone devices 2022-06-09 11:20:01 +02:00
pabloFuente e3aaf2a25a Update README with OpenVidu Tests badge 2022-06-08 14:40:26 +02:00
pabloFuente 83397b07dc openvidu-server: fix RPC missing parameters exception message 2022-06-08 12:40:00 +02:00
Juan Navarro 4e54cd2472 deployments: Allow users to print whole logs or just follow them
Users can call the script with "-f" or "--follow" in order to follow the
latest lines (like with system tool "tail -f"), of not provide this
argument to obtain the whole contents of the logs.
2022-06-06 14:54:43 +02:00
Juan Navarro 5d61cb1afa deployments: use "--tail 10" to follow logs
docker-compose uses "--tail all" by default, which prints the complete
logs before starting to follow new lines. This becomes a problem when
the service has been running for a lot of time and there are thousand of
lines.

Use "--tail 10" to mimic the behavior of the "tail" program, which shows
the latest 10 lines by default.
2022-06-06 14:46:37 +02:00
cruizba 5152f38d23 ci: Define defaults if not present for push 2022-06-06 14:33:40 +02:00
cruizba c4ba0b66b4 ci: Check if default values works on push 2022-06-06 14:26:39 +02:00
cruizba c326c206c4 ci: Use paths-ignore instead of paths 2022-06-06 14:16:32 +02:00
cruizba 757923bbc4 ci: Add e2e tests in github actions 2022-06-06 12:32:35 +02:00
csantosm 57c17b50ef openvidu-components: Fixed missing device labels in Firefox 2022-06-03 11:34:55 +02:00
csantosm a9854649a4 openvidu-components: Fixed form styles 2022-06-03 11:33:56 +02:00
csantosm 6e1783fb87 openvidu-components-e2e: Added sleep after open mat menu 2022-06-02 18:13:22 +02:00
csantosm 5d574fb3d2 openvidu-components: Allowed one single string token in webcomponent 2022-06-02 18:00:14 +02:00
csantosm 2fd764ce7c openvidu-components: Commented recording e2e test 2022-06-02 17:05:51 +02:00
cruizba e8fae9bf0f openvidu-test-e2e: Fix streamPropertyChangedEventTest race condition.
This supposedly fix a flaky test. If the event reaches before the viewport resolution is known, test would fail.
Now the viewport resolution is adquired in a new Thread and the resolution is not compared until the event
and viewport resolution are received
2022-06-02 15:12:04 +02:00
csantosm b80ca191e2 openvidu-components-e2e: added sleep after click button 2022-06-02 13:56:49 +02:00
csantosm 4a3865f419 github-actions: Fixed testapp url address 2022-06-02 13:32:14 +02:00
csantosm adf362f4e8 github-actions: added certs chrome flags 2022-06-02 13:21:18 +02:00
csantosm 86fdab922a github-actions: Launched openvidu-server with recording enabled 2022-06-02 12:49:54 +02:00
csantosm e65a6b7afe openvidu-components: Minor changes in recording panel view 2022-06-02 12:45:41 +02:00
csantosm 5754dcfd8f openvidu-components: Updated e2e test 2022-06-02 12:44:32 +02:00
csantosm 44110a6246 openvidu-components: Added recording
openvidu-components: Fixed recording directive name
2022-06-02 12:44:32 +02:00
cruizba 206a44d881 openvidu-test-e2e: Ignore videoDimensions event in filter event test. 2022-06-02 00:48:12 +02:00
cruizba 8b27191378 Jenkinsfile: Remove kurento-java skip tests 2022-06-01 18:32:31 +02:00
cruizba d6c430cd66 Jenkinsfile: Temporarly disable tests until kurento-java tests passes 2022-06-01 12:50:18 +02:00
cruizba f0bba6ee43 Jenkisfile: Move mvn_settings instead of copying 2022-06-01 11:24:39 +02:00
cruizba 49dc9e7df0 Jenkisfile: Get public kurento snapshots credential to download snapshots 2022-06-01 11:18:46 +02:00
cruizba bbb16189ef Jenkinsfile: use maven settings so snapshots can be downloaded. Build kurento mvn build snapshots with only one thread to avoid github packages download restrictions 2022-06-01 10:48:10 +02:00
csantosm 4af8be5a72 openvidu-components: Updated video poster styles 2022-06-01 10:01:05 +02:00
Carlos Ruiz Ballesteros f2f37ab42d
Merge pull request #722 from OpenVidu/kurento-6.18
Change to new API methods for Kurento release 6.18.0
2022-05-31 17:46:17 +02:00
cruizba a8fd0f8cf7 deployment: Prepare for kurento dev-6.18 2022-05-31 17:44:41 +02:00
csantosm 5fa3f749f5 openvidu-components: Added black poster when video is muted 2022-05-31 17:08:59 +02:00
csantosm 2785d3c036 Revert "openvidu-node-client: Updated rejected responses"
This reverts commit df7bd5f202.
2022-05-31 10:44:57 +02:00
cruizba f0f5f217bb openvidu-server: Missing add customIceServer in joinRoom response 2022-05-30 20:46:20 +02:00
cruizba 958eaee41d openvidu-server: Check nulls before setting default ICE servers in customIceServers 2022-05-30 20:40:10 +02:00
cruizba 789ff26cfc openvidu-server: Set default coturnIp and coturnPort in customIceServers at joinRoom RPC response, ONLY if customIceServers are not defined 2022-05-30 18:03:50 +02:00
csantosm e505cd6c8d openvidu-node-client: Downgraded dev dependencies 2022-05-30 13:17:40 +02:00
pabloFuente 8bb96d6912 Minor updates in README 2022-05-30 12:10:28 +02:00
pabloFuente 8d3fe2b681 Trigger recordingStarted event for new connected participants 2022-05-27 11:13:59 +02:00
csantosm df7bd5f202 openvidu-node-client: Updated rejected responses and dependencies
Old promises rejections return unusable responses to the client. Now they return the status code
2022-05-26 13:43:29 +02:00
Flamenco 75a484e831
Add space after period. 2022-05-20 13:15:33 -04:00
cruizba 75f4c6497f Fix update link error 2022-05-20 17:42:38 +02:00
pabloFuente bc1d1b7925 openvidu-server: allow missing parameter sdkVersion on RPC joinRoom 2022-05-20 14:13:59 +02:00
csantosm ad3ad30e86 openvidu-components: Added translations 2022-05-20 13:53:12 +02:00
csantosm cccf0474d1 openvidu-components: Hidden recording code in docs 2022-05-20 13:34:42 +02:00
pabloFuente 1766ae15c8 openvidu-components-angular: remove typo from method description 2022-05-20 12:43:53 +02:00
pabloFuente a64ccb03cf Fix AWS cli --createVolumePermission to --create-volume-permission 2022-05-13 17:19:42 +02:00
pabloFuente a4e10199bd Update docker-compose.yml tag versions to 2.22.0 2022-05-13 16:54:49 +02:00
pabloFuente ea6ea80f18 Update AMIs scripts 2022-05-13 16:35:03 +02:00
pabloFuente 7ccb53ab51 Update openvidu-components-angular to 2.22.0 2022-05-13 14:41:39 +02:00
pabloFuente d04a16a07b Update openvidu-components-angular package.json (openvidu-browser version) 2022-05-13 12:29:55 +02:00
pabloFuente d85bd79da9 Update OPENVIDU_UPGRADABLE_VERSION to 2.22 in installation scripts 2022-05-12 17:31:17 +02:00
jenkinsopenvidu 44b7474a38 Update to version v2.22.0 2022-05-12 14:57:21 +00:00
pabloFuente 4c028e564e Update docker-compose.yml file versions 2022-05-12 16:47:24 +02:00
openvidu 4e2b71bb0c Update openvidu-java-client to version v2.22.0 2022-05-12 14:02:07 +00:00
jenkinsopenvidu 51c03383cf Update openvidu-node-client to version v2.22.0 2022-05-12 13:49:50 +00:00
csantosm 140449948a openvidu-components: Unified common panel styles 2022-05-12 11:32:36 +02:00
csantosm d3a755b48e openvidu-components: Build openvidu-browser in CI job 2022-05-12 10:27:36 +02:00
csantosm 185ea7a1fd openvidu-components: Disabled background button with video muted 2022-05-10 17:18:33 +02:00
pabloFuente a38d6b4855 openvidu-browser: remove unused parameter in Publisher#getVideoDimensions 2022-05-10 15:45:43 +02:00
cruizba 46ba13410b deployment: Minor fix on start 2022-05-10 02:08:03 +02:00
cruizba 1fd6308ec1 deployment: Better description for CoturnInMediaNodes CF parameter 2022-05-09 18:14:34 +02:00
cruizba ce70a4b4db Update coturn related parameters in .env and scripts. Remove upgrade from enterprise ha 2022-05-09 18:08:26 +02:00
cruizba a5ba5032bf Revert "deployment enterprise: Read all .env variables so other OpenVidu parameters can be readen by the replication manager."
This reverts commit ac427c0f57.
2022-05-09 15:38:39 +02:00
cruizba ac427c0f57 deployment enterprise: Read all .env variables so other OpenVidu parameters can be readen by the replication manager. 2022-05-09 15:01:05 +02:00
csantosm e817c2304d openvidu-component: Close panel when component is destroyed 2022-05-09 13:28:07 +02:00
csantosm 3922bb456c openvidu-components: Removed user settings component 2022-05-09 13:27:37 +02:00
csantosm e3340171a0 openvidu-components: Disposed MediaStream when component is destroyed 2022-05-09 13:20:33 +02:00
csantosm 56ce32729d openvidu-components: Updated e2e dependencies 2022-05-09 11:13:53 +02:00
cruizba d652201ce8 deployment enterprise: Add docker sock for restarts 2022-05-09 01:42:18 +02:00
cruizba f7d57e1c52 deployment: Fix typo media nodes AMIs 2022-05-06 20:42:04 +02:00
cruizba d7aa64fe91 Remove from enterprise openvidu-call. Kibana and Elasticsearch not present in docker-compose.yml, so there is no need to scale=0 the service. 2022-05-05 18:20:22 +02:00
pabloFuente 279da4eeaf openvidu-components-angular: manage some incompatible VB situations 2022-05-05 18:07:33 +02:00
pabloFuente 7832f5a75f openvidu-components-angular: multiple VB bug fixes 2022-05-05 14:03:41 +02:00
pabloFuente f735819ae2 openvidu-browser: re-apply VB filter automatically after unmute 2022-05-05 14:01:31 +02:00
pabloFuente 99cd4cdfd7 openvidu-browser: refactor replaceTrack to not override last constraints 2022-05-04 19:55:08 +02:00
Juan Navarro 3425e601bf Change to new API methods for Kurento release 6.18.0
* Old: MediaFlowOutStateChange
* New: MediaFlowOutStateChanged

* Old: MediaFlowInStateChange
* New: MediaFlowInStateChanged

* Old: MediaTranscodingStateChange
* New: MediaTranscodingStateChanged

* Old: OnIceCandidate
* New: IceCandidateFound

* Old: OnIceGatheringDone
* New: IceGatheringDone

* Old: OnIceComponentStateChanged, IceComponentStateChanges
* New: IceComponentStateChanged

* Old: OnDataChannelOpened, DataChannelOpens
* New: DataChannelOpened

* Old: OnDataChannelClosed, DataChannelClose
* New: DataChannelClosed
2022-05-03 17:21:23 +02:00
Juan Navarro 4ee20ed3ec pom.xml: Update to kurento-client 6.18.0-SNAPSHOT
Open up access to the new API methods that get introduced in the Kurento
Java client 6.18 development version.
2022-05-03 17:21:23 +02:00
pabloFuente 066810be17 openvidu-test-e2e: do not use headless mode for Virtual Background 2022-05-03 13:05:59 +02:00
csantosm 117e6647a9 openvidu-components: Fixed background directive 2022-04-29 12:46:51 +02:00
csantosm bad018a10e openvidu-components: Improved backgrounds component 2022-04-29 11:42:14 +02:00
csantosm b52f8922cb openvidu-components: Added more background samples 2022-04-29 11:40:28 +02:00
csantosm af02ffe92a openvidu-components: Added background effects param to webcomponent 2022-04-29 10:38:49 +02:00
pabloFuente 8550b77d17 openvidu-browser: fix removeFilter error when no filter available 2022-04-28 14:05:28 +02:00
pabloFuente 354a26c6d0 openvidu-browser: mute videoClone on VB 2022-04-28 13:43:45 +02:00
csantosm 2dff8faf4b openvidu-components: Updated test app 2022-04-28 13:09:42 +02:00
csantosm 8382aaf179 openvidu-components: Updated background effects panel 2022-04-28 13:01:34 +02:00
pabloFuente a209e57fd5 openvidu-browser: VB static download URL from token params 2022-04-28 12:26:23 +02:00
csantosm e819bf7b6c openvidu-browser: Fixed typo 2022-04-28 12:14:42 +02:00
pabloFuente 1517be875a openvidu-browser: get openviduServerUrl from token in VB 2022-04-28 12:10:35 +02:00
csantosm 2e39243070 openvidu-browser: Fixed typo 2022-04-28 12:01:04 +02:00
pabloFuente 1f1b54f111 openvidu-browser: fix VB edition checks 2022-04-28 11:53:24 +02:00
Carlos Ruiz Ballesteros 5d354f1f0e
Update new_api_pro.conf 2022-04-28 11:47:15 +02:00
pabloFuente df799bfb2e openvidu-browser: fix VB when not connected to Session 2022-04-28 11:28:26 +02:00
csantosm 0c863e0940 openvidu-components: Released resources when video muting 2022-04-27 14:24:54 +02:00
pabloFuente 5a6b0db6f8 openvidu-browser: refactor Publisher#publishVideo method 2022-04-27 14:11:55 +02:00
pabloFuente 6c1f77dd3a openvidu-browser: rename "value" to "enabled" in publishAudio/publishVideo 2022-04-27 12:55:20 +02:00
pabloFuente 5226b6d464 VB e2e test 2022-04-27 12:05:33 +02:00
csantosm 570709adc2 openvidu-components: Added virtual background and recording features
Added background effects GUI
WIP: Added  activities panel
2022-04-27 11:14:11 +02:00
cruizba 1655335aa7 Update generate docs and package.json 2022-04-26 18:27:57 +02:00
cruizba 18ff97da7c deployment: Add coturn in media nodes for nightly AMIs 2022-04-25 18:56:07 +02:00
cruizba 4ab629562d deployment: Change parameter name from OPENVIDU_PRO_COTURN_PUBLIC_IP_AUTODISCOVER to OPENVIDU_PRO_MEDIA_NODE_PUBLIC_IP_AUTODISCOVER 2022-04-25 11:43:41 +02:00
cruizba 42ad7bce5d deployment: Infrastructure changes to allow coturn in media nodes 2022-04-25 01:43:54 +02:00
pabloFuente 1ee4a9be10 openvidu-browser: manage token on VB 2022-04-22 16:54:10 +02:00
pabloFuente 707ad3d673 openvidu-browser: fix VB clean up process to avoid errors 2022-04-22 14:56:11 +02:00
pabloFuente f91c7b1928 Virtual Background token integration 2022-04-22 11:21:42 +02:00
cruizba 78d6320cad deployment Remove not used cfn-hup command 2022-04-22 00:20:28 +02:00
cruizba 4eccd15494 deployment: AMI 20.04 no longer uses python-pip; Only python3-pip can be installed. 2022-04-21 22:30:57 +02:00
cruizba edfbd9cf34 deployment: Don't ask about time zone while building openvidu-server-pro docker image 2022-04-21 21:27:44 +02:00
cruizba b1a44b0f3a deployment: Update base images of openvidu-server, openvidu-server-pro and nginx 2022-04-21 19:46:10 +02:00
cruizba e01904b8bd deployment: Use Ubuntu 20.04 for AMIs 2022-04-21 19:43:22 +02:00
cruizba 02969d1551 deployment: Better way to install latest docker and docker-compose v2 in AMIs 2022-04-21 19:06:40 +02:00
cruizba 8edd8827ca deployment: Don't use /dev/random to generate coturn secret which produces a pipe error. Use shuf instead 2022-04-21 19:06:40 +02:00
pabloFuente 4ab7286978 openvidu-server: minor refactoring in SessionManager new Participant operation 2022-04-21 18:21:01 +02:00
cruizba 16c1003584 deployment: Support for docker compose v2 and increase http timeout for slow networks" 2022-04-21 14:09:20 +02:00
pabloFuente 28a6fd4064 openvidu-browser: check if Filter exists on Stream#applyFilter 2022-04-21 13:44:44 +02:00
pabloFuente 5826032020 openvidu-browser: restrict updated values of VB to background image URL 2022-04-21 12:36:25 +02:00
cruizba 34be4d8c13 deployment: openvidu-server & openvidu-server-pro entrypoint improvements
- Create directory /run/secrets/coturn just when it is necessary to generate a new secret file for COTURN_SHARED_SECRET_KEY. (Docker daemon should generate it anyways while running
- Use `tr -dc '[:alnum:]' </dev/urandom` instead of `tr -dc A-Za-z0-9 </dev/urandom` to generate alphanumeric COTURN_SHARED_SECRET_KEY
- Define possible empty variables at the beginning of the entrypoint.
- Fail script on any error with `set -o errexit -o errtrace -o pipefail -o nounset`
- More meaningfull message while waiting Kibana service
2022-04-21 11:55:17 +02:00
cruizba d0aedc70cf deployment: OpenVidu CE - Force relay to go over docker bridge network 2022-04-20 20:29:57 +02:00
cruizba 4f04f3b33c Adapt coturn configuration to allow multiple coturns by kms uri 2022-04-20 18:50:34 +02:00
csantosm b29ecafea5 openvidu-components: Disabled screenshare if token is not received 2022-04-18 17:12:08 +02:00
csantosm 2deadbbe02 openvidu-components: Added event types 2022-04-18 16:39:23 +02:00
csantosm 3b986dcfaa openvidu-components: Updated css variable names 2022-04-18 13:33:53 +02:00
csantosm d0f1e9a121 openvidu-components: Updated doc 2022-04-18 12:50:20 +02:00
csantosm 56984fd465 openvidu-components: Updated styles 2022-04-13 14:03:34 +02:00
csantosm c6e08ac287 openvidu-components: Removed docs directive samples images 2022-04-13 14:03:34 +02:00
cruizba ad54a3005d openvidu-server, deployment: Generate Coturn shared key instead of using OpenVidu Secret for better security. Remove unused COTURN_REDIS properties 2022-04-12 14:42:12 +02:00
cruizba 80ab17ff92 openvidu-browser, openvidu-node-client, openvidu-testapp: Update to lockversion v2 and fixes for npm v8 build 2022-04-12 14:42:12 +02:00
pabloFuente a30f4dcd85 openvidu-browser: chroma virtual background 2022-04-11 23:35:54 +02:00
csantosm c0a525aac6 openvidu-components: Updated README 2022-04-11 16:03:48 +02:00
csantosm 493f1e3ba0 openvidu-components: Released media devices on videoconference destroy 2022-04-11 13:34:12 +02:00
csantosm 628b62c0aa openvidu-components: Updated README 2022-04-08 14:01:47 +02:00
csantosm b2d5a6e3b6 openvidu-components: Moved docs config files under library directory 2022-04-08 13:55:26 +02:00
csantosm 71d94db06e openvidu-components: Added sound when message is received 2022-04-08 12:12:43 +02:00
csantosm b7efcf86c0 openvidu-components: Hidden screensharing button in mobile devices 2022-04-08 11:57:07 +02:00
csantosm 9f34c01d6e openvidu-components: Fixed bug with media devices
- The storage device was null after refreshing the page because of the cameras array was empty and it can't match.
2022-04-08 11:52:22 +02:00
csantosm f5dada6080 openvidu-components: Detected change after view init 2022-04-07 12:55:24 +02:00
csantosm 28606b1ff7 openvidu-components: Added more e2e test 2022-04-07 12:54:34 +02:00
csantosm 70e93df54d openvidu-components: Updated openvidu-angular docs 2022-04-07 10:27:00 +02:00
csantosm 027508acd3 openvidu-components: Removed e2e webcomponent assets 2022-04-07 10:04:20 +02:00
csantosm bfb91a332c openvidu-components: Renamed webcomponent leave session to disconnect 2022-04-07 10:04:20 +02:00
csantosm 1ec723edd4 openvidu-components: Updated webcomponent build script 2022-04-07 10:04:20 +02:00
csantosm d7b81739e7 openvidu-components: Allowed external panels
- Allowed injecting external panels and exported the panel service for toggling panels and subscribe to the panel status
- Renamed menu to panel
- Updated docs
2022-04-07 10:04:20 +02:00
cruizba 150657763c deployment: Bump coturn to 7.0.0-dev1 2022-04-06 20:27:45 +02:00
pabloFuente 8457592c0b openvidu-browser: modify isPro with isAtLeastPro 2022-04-06 20:02:22 +02:00
pabloFuente 41f53b9895 Support Virtual Background image 2022-04-06 19:54:41 +02:00
cruizba 19f4f607b1 openvidu-server: Typo. Add missing license comment 2022-04-06 18:42:52 +02:00
cruizba ac5485ddc0 openvidu-server, deployment: Remove redis for coturn. Now credentials are generated using https://datatracker.ietf.org/doc/html/draft-uberti-behave-turn-rest-00 2022-04-06 18:37:11 +02:00
pabloFuente e9cdb7b131 openvidu-browser: input options for Virtual Background 2022-04-06 13:39:54 +02:00
pabloFuente 841db74c75 openvidu-browser: MVC Virtual Background 2022-04-06 13:10:18 +02:00
csantosm 4c2ab10e07 openvidu-components: Added panel e2e tests 2022-04-06 10:02:54 +02:00
csantosm 4fc878f796 openvidu-components: Added directive examples and clean testapp
- Clean test components
- Avoid using backend in development
2022-04-05 15:58:12 +02:00
csantosm aa0c78b882 openvidu-components: Refactored panel service 2022-04-05 15:51:10 +02:00
csantosm 4cef8c3fac openvidu-components: Updated docs and improved service method names 2022-04-05 15:45:13 +02:00
csantosm b1c47d9506 openvidu-components: Fixed styles 2022-04-05 15:43:24 +02:00
csantosm b0afa580a7 openvidu-components: Renamed menu service to panel service 2022-04-05 15:40:43 +02:00
csantosm 1ee8bd1f6e openvidu-components: Renamed service method 2022-04-01 13:24:56 +02:00
csantosm 1cdb938ad4 openvidu-components: Hidden audio detector when participant muted 2022-04-01 12:34:23 +02:00
csantosm 9888154a02 openvidu-components: Added screensharing E2E 2022-04-01 12:05:58 +02:00
csantosm e252b84740 openvidu-components: Fixed bug muting remote participant 2022-04-01 11:05:51 +02:00
pabloFuente 09248b2b45 openvidu-testapp: include sourceMap in serve command 2022-04-01 10:42:28 +02:00
pabloFuente 8d7b2abe4f openvidu-test-e2e: fix media server reconnect tests to allow other Docker images 2022-03-31 13:08:09 +02:00
csantosm 98fbe060a3 openvidu-components: Moved component logic to openvidu service
Moved toggle screen, toggle video and toggle audio logic from toolbar and prejoin component to openvidu service with the aim of avoiding code duplications and being able to provide a powerful method to the components user
2022-03-31 12:25:24 +02:00
cruizba fccde40641 deployment: exit 1 on 'fatal_error' in insallation scripts 2022-03-30 19:27:52 +02:00
cruizba 664abf86dc Fix link on error while upgrading OpenVidu PRO to redirect to the upgrading instructions documentation 2022-03-30 18:24:23 +02:00
cruizba e133b1f92d deployment: Update OPENVIDU_UPGRADABLE_VERSION version to 2.21.0 to test upgrade scripts 2022-03-30 18:15:46 +02:00
cruizba 47c4c91f7a deployment: OpenVidu Pro - Add AMI as argument to upgrade script 2022-03-30 18:13:55 +02:00
csantosm a39249eaaf openvidu-components: Fixed video content style 2022-03-30 12:13:26 +02:00
csantosm af3c21742f openvidu-components: Fixed bug when toggling audio in with screenshare 2022-03-30 12:13:26 +02:00
pabloFuente 06f1fcbee1 openvidu-browser: improved Publisher#publishVideo turns off webcam light 2022-03-29 18:31:31 +02:00
cruizba 1db373caba deployment: get_ov_media_node_ami_id.sh helper script to get AMIs from eu-west-1 2022-03-29 18:04:40 +02:00
csantosm 3deda3849e openvidu-components: Updated doc build 2022-03-29 12:35:32 +02:00
pabloFuente 9ac32da633 openvidu-server: infinite OPENVIDU_PRO_CLUSTER_RECONNECTION_TIMEOUT with -1 2022-03-29 11:16:02 +02:00
pabloFuente 5b61d8d0e9 openvidu-test-browsers: make concurrent map collections final 2022-03-28 23:06:45 +02:00
pabloFuente ce37fa6747 openvidu-test-browsers: add accumulated events map to CustomWebhook 2022-03-28 23:04:30 +02:00
pabloFuente bba002c046 openvidu-test-browsers: fix possible NullPointer on CustomWebhook#waitForNextEventToBeOfType 2022-03-28 20:04:35 +02:00
csantosm 7ac3139e44 openvidu-components: Fixed colors in prejoin component 2022-03-28 16:52:03 +02:00
csantosm c2a393cc51 openvidu-components: Updated docs assets 2022-03-28 16:52:03 +02:00
pabloFuente f70053c2f3 openvidu-server: add nodeRecovered flag to mediaNodeUsageRegistration method 2022-03-28 12:39:42 +02:00
csantosm 239b7e28bf openvidu-components: Updated styles name variables 2022-03-28 11:10:14 +02:00
pabloFuente 07aa22ed1d openvidu-server: remove final from UpdatableTimerTask methods 2022-03-26 16:05:38 +01:00
pabloFuente b6b2663cf3 Update kurento-java version from 6.16.4 to 6.16.5 2022-03-26 15:57:46 +01:00
pabloFuente 6ee258966d openvidu-server: some protected methods to public. KmsManager refactoring of handler 2022-03-25 15:21:08 +01:00
pabloFuente 44363dbde0 openvidu-server: change mustRemoveMediaNode behavior in KmsManager 2022-03-25 14:11:28 +01:00
pabloFuente 2a3e05ef80 openvidu-server: minor refactoring of KmsManager KurentoClient events handler 2022-03-25 14:01:10 +01:00
csantosm 888e45fe4d openvidu-components: Updated doc 2022-03-25 12:39:34 +01:00
csantosm 9f59559575 openvidu-components: Added gitignore 2022-03-25 12:39:34 +01:00
pabloFuente 03859f5d06 Integration test: Assert.fail instead of System.err 2022-03-25 12:36:21 +01:00
pabloFuente b8079ce519 Integration tests: protect Whitebox#getInternalState 2022-03-25 12:21:56 +01:00
pabloFuente ab8fdec4f4 Update REST API Pro e2e testing method 2022-03-24 23:15:56 +01:00
pabloFuente ad152fab8e Tests: protect InvocationOnMock#getArgument class cast exceptions 2022-03-24 23:08:25 +01:00
cruizba 80b097e379 deployment: change some wrong names at cloudformation lambda. Remove not needed return 2022-03-24 21:13:59 +01:00
csantosm ff2dc6d86b openvidu-components: Added openvidu-angular documentation 2022-03-24 17:47:54 +01:00
csantosm d81124150a openvidu-components: Refactored methods name 2022-03-24 17:47:06 +01:00
pabloFuente 5cc6579bf0 nodeRecovered event 2022-03-24 12:34:02 +01:00
cruizba 05b8da962e deployment: Comment Cloudformation Lambda purpose 2022-03-23 17:22:09 +01:00
cruizba fa5cd75e3c deployment: Lambda to copy original AMIs in OpenVidu PRO. Better way to setup OpenVidu Security groups in Cloudformation. Remove media nodes on destroy cloudformation using Lambda" 2022-03-23 17:15:44 +01:00
csantosm 4657b97f35 openvidu-components: Enhanced bigPercentage layout element 2022-03-23 11:51:50 +01:00
csantosm 23ad2dbd02 openvidu-components: Added e2e test for attribute directives 2022-03-22 16:14:42 +01:00
pabloFuente 4e7483c235 Fix integration tests 2022-03-22 12:23:19 +01:00
pabloFuente 594d9f92f9 openvidu-server: prepare parameterized Media Node reconnection timeout 2022-03-22 10:59:47 +01:00
csantosm fbf04bc6a2 github-actions: Updated e2e job 2022-03-21 17:10:43 +01:00
csantosm 2130d93c45 openvidu-components: Updated e2e workflow 2022-03-21 17:02:54 +01:00
csantosm 6abc49a3a6 openvidu-components: Updated server port testapp 2022-03-21 16:49:24 +01:00
csantosm 9b7d0ea459 openvidu-components: Updated e2e workflow 2022-03-21 16:44:52 +01:00
csantosm 05289aef93 github-actions: Updated E2E workflow 2022-03-21 16:33:40 +01:00
csantosm 0d9b629b18 openvidu-elements: Used proxy config for dev mode 2022-03-21 16:33:40 +01:00
csantosm 19a64c993a openvidu-components: Moved webcomponent e2e test to e2e directory
- Unifyed the e2e test in one single directory with a common config and dependencies
2022-03-21 16:33:40 +01:00
csantosm f0ec449f25 openvidu-components: Added e2e tests for angular apps
- Test the structural directives in angular apps
- Test the output events
2022-03-21 16:33:40 +01:00
pabloFuente 5c209a55ba openvidu-server: rename Kms#getMediaServer to Kms#getMediaServerType 2022-03-21 14:48:21 +01:00
pabloFuente 96a0bbc155 openvidu-server: remove commented Kms#fetchMediaServerType 2022-03-21 14:46:33 +01:00
pabloFuente 6f417a001f openvidu-server: Kms#fetchMediaServerType performed in single point 2022-03-21 14:44:38 +01:00
pabloFuente 9d975d3a17 openvidu-server: MediaNodeManager 2022-03-21 13:49:30 +01:00
pabloFuente 592cec9d10 KURENTO_MEDIA_SERVER_VERSION to KURENTO_MEDIA_SERVER_IMAGE 2022-03-21 11:39:10 +01:00
pabloFuente 3d3f7c1d74 Update package.json dependencies for OpenVidu dashboard 2022-03-18 15:08:03 +01:00
pabloFuente 9e68dd6d10 openvidu-server: reorder KurentoClient event handlers on KmsManager 2022-03-18 14:08:20 +01:00
pabloFuente a91fc4f870 openvidu-server: avoid Media Node removal ops if not 1st reconnection attempt 2022-03-18 14:06:43 +01:00
pabloFuente a940708f8d openvidu-server: update logback config to only log ERROR message of kurento-client 2022-03-18 13:46:00 +01:00
pabloFuente a74decb540 openvidu-server: improve logging on Media Node reconnection method 2022-03-18 12:49:37 +01:00
pabloFuente 022a692735 openvidu-server: Kms#fetchMediaServerType (no remote operation on GET media-node) 2022-03-18 12:38:08 +01:00
pabloFuente 701e35356b Update Copyright dates 2022-03-18 10:31:19 +01:00
pabloFuente b28bbc7c41 openvidu-test-e2e: fix restApiTest with alert text 2022-03-17 22:18:06 +01:00
cruizba 5c5d609fc8 Deployment: Copy AMIs on first launch OpenVidu CE 2022-03-17 19:18:01 +01:00
pabloFuente 664e608cba openvidu-test-browsers: total accumulated number of events in CustomWebhook 2022-03-17 17:16:52 +01:00
pabloFuente 85c0cc0584 openvidu-server: fix close session and init session race condition 2022-03-17 17:16:17 +01:00
csantosm 73d275a42e github-actions: Renamed workflow steps 2022-03-17 13:54:44 +01:00
csantosm 57f2816d05 openvidu-components: Fixed problems after merge 2022-03-17 13:44:45 +01:00
csantosm f02bacf372 github-actions: Run selenium container with detach mode 2022-03-17 12:35:15 +01:00
csantosm dc6f38c368 Merge branch 'ov_components' 2022-03-17 12:18:03 +01:00
csantosm c285d516ef Added github actions workflow 2022-03-17 12:07:04 +01:00
csantosm 1e4571675d openvidu-components: Fixed test when running in CI mode 2022-03-17 12:05:54 +01:00
pabloFuente acea8428c6 openvidu-testapp: add class identifiers to HTML components 2022-03-17 12:03:14 +01:00
csantosm f6d014bef6 openvidu-components: Parametrized selenium server url in E2E tests 2022-03-17 10:41:48 +01:00
csantosm 55d9abe2b8 openvidu-components: Added participant created event and e2e test 2022-03-16 16:34:55 +01:00
csantosm 16f211751b openvidu-components: Fixed participant name value in prejoin component 2022-03-16 14:21:58 +01:00
csantosm 6a01a33dba openvidu-components: Refactored webcomponent wrapper 2022-03-16 14:19:04 +01:00
csantosm facc06bebc openvidu-components: Added webcomponent E2E tests 2022-03-16 12:15:22 +01:00
pabloFuente 87f2613860 openvidu-server: always call WebRtcEndpoint#addIceCandidate on RPC onIceCandidate from openvidu-browser 2022-03-15 17:37:23 +01:00
pabloFuente a34f67639a openvidu-browser: fix StreamManager.initializeVideoProperties mirror prop 2022-03-14 12:26:03 +01:00
pabloFuente fd1cc1a59d SDKs: document the background Session.fetch upon a 409 in OpenVidu.createSession 2022-03-11 14:34:04 +01:00
pabloFuente c2873b5020 openvidu-test-e2e: extend createSession in openviduJavaClientTest 2022-03-11 14:06:42 +01:00
pabloFuente 918ef299ae SDKs: fetch remote session on createSession 409 2022-03-11 13:44:27 +01:00
pabloFuente defba84160 openvidu-server: remove unnecessary try-catch after 2.21 in RpcHandler 2022-03-11 13:40:16 +01:00
pabloFuente 993dc831c8 openvidu-server: update dashboard package.json dependencies with npm audit 2022-03-11 13:15:35 +01:00
csantosm 442119d0e4 openvidu-components: Updated webcomponent wrapper 2022-03-11 12:11:41 +01:00
csantosm 9d94ffa417 openvidu-components: Fixed styles in Firefox 2022-03-11 11:41:31 +01:00
pabloFuente af6a1a3693 openvidu-java-client: improve exception handling and Entity consumption 2022-03-10 20:50:29 +01:00
csantosm 88416b3981 openvidu-components: Emitted session created event 2022-03-10 17:08:12 +01:00
pabloFuente 85b6496ba0 openvidu-browser: improve video mirroring logic 2022-03-10 16:36:51 +01:00
Pablo Fuente Pérez 905b7fe281
Merge pull request #689 from Flamenco/patch-3
Ensure video element mirroring is removed
2022-03-10 16:29:27 +01:00
csantosm 6fc2ca0bc6 openvidu-components: Updated styles 2022-03-10 16:18:09 +01:00
csantosm ad9e4db4e8 openvidu-components: Fixed connection bug when prejoin is disabled 2022-03-10 16:17:27 +01:00
pabloFuente 48b8bd5c5a openvidu-browser: log error on filter event handlers when missing (https://github.com/OpenVidu/openvidu/pull/567) 2022-03-10 16:14:12 +01:00
csantosm bb16418385 openvidu-components: Updated test app 2022-03-10 15:41:51 +01:00
csantosm 7eedba795b openvidu-components: Added prejoin drective
- Hide/show prejoin page
- Refactored prejoin component
- Moved the participant initialization to videoconference
- Set necessary delay for the correct layout initialization
2022-03-10 14:16:40 +01:00
csantosm ab74818579 openvidu-components: Fixd bug updating participants array in part. panel 2022-03-10 13:00:20 +01:00
csantosm 27d70de3cd openvidu-components: Added directive for hidding/showing mute button 2022-03-10 12:55:43 +01:00
csantosm 41f83bc340 openvidu-elements: Fixed participant factory types 2022-03-10 12:34:20 +01:00
csantosm 412a95ea43 openvidu-elements: Added participant panel item elements directive
Allowed to add html elements to participants item
2022-03-10 12:33:49 +01:00
csantosm 115e9131d0 openvidu-components: Added toolbar additional buttons directive
Allowed added additional buttons in toolbar component without redefine it
2022-03-10 11:42:57 +01:00
csantosm e11af2ebd7 openvidu-components: Added component events 2022-03-09 15:31:21 +01:00
pabloFuente 569a8a470c openvidu-client: remove TODO comment 2022-03-09 13:10:47 +01:00
csantosm a3d5a9c98f openvidu-components: Fixed layout when is webcomponent
When webcomponent, the layout need more time for initilizating and showing the videos.
2022-03-09 12:34:10 +01:00
csantosm e0de51921c openvidu-components: Forced chat panel updates when new messages 2022-03-09 12:31:36 +01:00
csantosm 1ee9486143 openvidu-components: Updated API directives 2022-03-08 17:47:37 +01:00
csantosm 4d659581b7 openvidu-components: Fixed bug if ID is not in the connection data 2022-03-08 17:20:19 +01:00
Juan Navarro a8de57addd fixup! Review all href usages of target="_blank"
Some badly written lines (`target= "_blank"`, notice the space) were
missed by the precious commit.
2022-03-08 16:12:15 +01:00
cruizba 25bcc2cefc deployment: Move recording before sleep in testRecording.sh 2022-03-07 17:32:56 +01:00
csantosm b5a0ab434a openvidu-components: Added logo directive allowing load default logo 2022-03-07 16:54:27 +01:00
csantosm c6e84cb5da openvidu-components: Allowed meeting customization
Added attribute directives for allowing the app customization
2022-03-07 16:00:15 +01:00
cruizba b0fc2f986a deployment: Cache ffmpeg for AMIs on start media node 2022-03-07 14:27:41 +01:00
pabloFuente 90a665230c openvidu-server: manage INDIVIDUAL recording start uncaught error 2022-03-07 13:51:58 +01:00
cruizba 2ad640f35b Jenkinsfile: Fix wrong paralel script for recordings permissions 2022-03-07 13:10:04 +01:00
cruizba fa93ba9ae5 Jenkinsfile: Revert: Execute Kurento tests again 2022-03-04 14:34:27 +01:00
cruizba ec9088eb4a Jenkinsfile: Execute 'All permissions for recordings' as sudo 2022-03-04 13:31:02 +01:00
cruizba 0f29c49774 Jenkinsfile: Typo in prepareTestingEnvironment 2022-03-04 13:21:55 +01:00
cruizba dd811cdbf6 Jenkinsfile: Permissions for openvidu recordings 2022-03-04 13:19:17 +01:00
cruizba c0efc392c6 Jenkinsfile: Show message to not fail in Kurento 2022-03-04 12:54:24 +01:00
cruizba 44b0c02a0e Jenkinsfile: Disable temporarily kurento tests 2022-03-04 10:55:20 +01:00
pabloFuente 2dbbcfbe33 openvidu-server: extend timeouts during integration test 2022-03-04 10:48:10 +01:00
openvidu 8a598a1702 Update openvidu-java-client to version v2.21.1 2022-03-03 21:06:43 +00:00
pabloFuente bccd4dd9e8 openvidu-java-client 2022-03-03 18:28:32 +01:00
pabloFuente 08b7c19830 Update OPENVIDU_UPGRADABLE_VERSION to 2.20 in all installation scripts 2022-03-03 14:31:57 +01:00
pabloFuente 2f6eb9f846 openvidu-testapp: openvidu-node-client updated to 2.21.0 2022-03-03 13:43:28 +01:00
jenkinsopenvidu 0e71cbc561 Update to version v2.21.0 2022-03-03 12:28:08 +00:00
pabloFuente 7ef258ffcc Updated docker-compose files to 2.21.0 2022-03-03 13:19:54 +01:00
csantosm 4cb959ac83 openvidu-components: Avoided show prejoin until participant created 2022-03-03 10:59:17 +01:00
csantosm 3786d5bef2 openvidu-components: Fixed bug enlarging the screen video 2022-03-03 10:36:17 +01:00
csantosm 5a41202935 openvidu-components: Changed impure pipe to pure to increased efficiency
- Updated the behaviour subject creating a new reference object 
- Made the streamTypesEnabled pipe to pure 
- Fixed update bug in participants panel
2022-03-03 10:32:41 +01:00
csantosm 7af7b96a2d openvidu-components: Created participant from pre-join component
* Refactored update local participant method
* Refactored pipes
2022-03-02 17:35:14 +01:00
openvidu 4d37cbf4fe Update openvidu-java-client to version v2.21.0 2022-03-02 16:01:58 +00:00
jenkinsopenvidu 85db0393dc Update openvidu-node-client to version v2.21.0 2022-03-02 15:57:18 +00:00
pabloFuente f503d5006b openvidu-server: fix lack of media_node_id to ELK summaries 2022-03-02 15:01:58 +01:00
csantosm b4decda1f5 openvidu-components: Updated avatar-profile component 2022-03-02 11:02:06 +01:00
csantosm 1279962555 openvidu-components: Replaced user-settings component to pre-join 2022-03-02 11:01:07 +01:00
cruizba 773bb11e1b deployment: Short description 2022-03-01 12:29:08 +01:00
cruizba 4c23213428 deployment: Add description to label in OpenViduEdition parameter of CF 2022-03-01 12:15:10 +01:00
pabloFuente 0b0f260ec9 Remove OPENVIDU_WEBRTC_SIMULCAST property from CE application.properties 2022-03-01 11:29:49 +01:00
cruizba 7763f331bc deployment: Add openvidu edition as CF parameter 2022-03-01 10:54:29 +01:00
csantosm d29f650b02 openvidu-components: Replaced poster image to letter color box 2022-02-28 16:18:37 +01:00
csantosm e512dcc735 openvidu-components: Fixed participants initialization 2022-02-28 15:28:53 +01:00
csantosm b529f6edc6 openvidu-components: Refactored nickname container 2022-02-28 14:37:35 +01:00
Juan Navarro 4d004e4a9e Review all href usages of target="_blank"
Do not force the user's browser to open new tabs when navigating within
the documentation pages. We discussed about this and agreed that doing
so is user hostile and goes away from how HTTP links have been working
for 30 years (i.e. leave users decide if THEY want a new tab or not, by
how they open the links).

Used these regexes:

From: target="blank"
To: target="_blank"

From: (\]\((?!http)[^)]+\))\{:target="_blank"\}
To: $1

From: (\]\(https?://docs.openvidu.io[^)]+\))\{:target="_blank"\}
To: $1

From: href="((?!http)\S+)" target="_blank"
To: href="$1"

From: href="(https?://docs.openvidu.io\S+)" target="_blank"
To: href="$1"
2022-02-28 13:51:44 +01:00
Juan Navarro 1173f04abc openvidu-browser: Log MediaStream ID instead of whole object
Log the MediaStream ID, which is a string, instead of the mediaStream
object, which showed up as "[object MediaStream]" in the logs.
2022-02-28 13:51:44 +01:00
csantosm 8f2d598236 openvidu-components: Updated participant model
Moved local and nickname properties to Participant Model from Stream Model
2022-02-28 13:50:09 +01:00
csantosm 5f22072f71 openvidu-components: Force mute participant from participants panel 2022-02-28 13:06:39 +01:00
csantosm 3e21207f8c openvidu-components: Parametrized styles properties 2022-02-28 12:12:16 +01:00
cruizba 6d018de09d deployment: external-turn - More explanatory comments at .env and certbot.sh 2022-02-25 20:01:51 +01:00
cruizba d708d7f757 deployment: external-turn installation files 2022-02-25 19:39:43 +01:00
cruizba d32aefb900 openvidu-server,openvidu-node-client: Typos and missing parameter in openvidu-node-client for IceServerProperties 2022-02-25 16:24:27 +01:00
csantosm f23f39dd6f openvidu-components: Improved user-settings component
- Changed replaceTrack to republishTrack until replaceTrack issue is fixed (https://github.com/OpenVidu/openvidu/pull/700)
- Fixed bug in mat options 
- Added audio detector
2022-02-25 14:36:36 +01:00
csantosm 99a5c945b3 openvidu-components: Minor style change 2022-02-25 13:58:54 +01:00
csantosm 6057d1c11e openvidu-components: Refactored the video enlarged logic 2022-02-25 13:53:49 +01:00
csantosm 3318dfd207 openvidu-components: Refactored names and particicipant observables 2022-02-25 11:19:21 +01:00
cruizba ead3252ce7 openvidu-server: Remove System.out 2022-02-25 10:49:53 +01:00
cruizba c15d6170da openvidu-server: External Turn REST API credentials: https://datatracker.ietf.org/doc/html/draft-uberti-rtcweb-turn-rest-00 2022-02-25 10:47:07 +01:00
cruizba af5efc4de4 openvidu-server: Simplify readIceServer method to load OPENVIDU_WEBRTC_ICE_SERVERS 2022-02-24 21:59:00 +01:00
csantosm de4812754b openvidu-components: Splitted connection data from session 2022-02-24 17:16:11 +01:00
csantosm 1bf3ce1bc9 openvidu-components: Fixed layout bug.
The layout has a bad UX. The root element is created with the entire layout width and it has a weird UX behaviour. Custom class with no width and height has been added and removed dynamically when stream container is present.
2022-02-24 17:14:57 +01:00
csantosm b52ca52e1d openvidu-components: Minor styles changes 2022-02-24 10:39:36 +01:00
csantosm 000f21b9dd openvidu-components: Used OnPush change detection strategy 2022-02-24 10:20:32 +01:00
csantosm e02f72a0f1 openvidu-components: Fixed bug with fullscreen
Listened the F11 keydown for updating the UI
2022-02-24 10:16:23 +01:00
csantosm ad06e2239b openvidu-components: Fixed bug replacing the screen track 2022-02-23 17:10:11 +01:00
csantosm 948a64c551 openvidu-components: Added OnPush detection strategy 2022-02-23 12:13:28 +01:00
csantosm 8ee9d74d3d openvidu-components: Play sound when a new message is received 2022-02-23 12:10:16 +01:00
csantosm 8ab769161b openvidu-components: Fixed fullscreen toggle 2022-02-22 16:59:24 +01:00
csantosm e63ef15d18 openvidu-components: Fixed bug replacing tracks in user-settings 2022-02-22 15:17:15 +01:00
cruizba 963191fe93 openvidu: Remove not needed method 2022-02-21 22:57:23 +01:00
cruizba 8220d9e6ed openvidu-server: Minor changes on showing configuration at first run.
- Don't show on running some empty parameters on first run.
- Add post processing config for openvidu-pro to show postprocessed config parameters correctly on first run.
2022-02-21 22:19:38 +01:00
csantosm f40093746f openvidu-components: Imrpoved user settings
Fixed some bugs with replacing tracks and devices saved on storage
Minor refactoring
2022-02-21 17:33:23 +01:00
Juan Navarro c972751e42 Use explicit anchor links for INDIVIDUAL and COMPOSED recording
Use explicitly set anchor links whenever they are used elsewhere.
Otherwise, changes in header text would break all references.
2022-02-18 13:28:48 +01:00
csantosm b437547501 openvidu-components: Improved components cutomization
Custom structural directives have been added for improving the components customization. 
These improvements now allow add custom child components inside of a custom parent component.
 Besides, the conditional logic has been moved from view to model for improving maintainability
2022-02-17 17:26:30 +01:00
Carlos Ruiz Ballesteros a6df44699c
Merge pull request #698 from OpenVidu/feature/custom-ice-servers
Feature/custom ice servers
2022-02-16 22:39:57 +01:00
cruizba 7cc5e0c7d0 Merge branch 'master' of https://github.com/OpenVidu/openvidu into feature/custom-ice-servers 2022-02-16 18:12:03 +01:00
cruizba 2719540d32 openvidu: Rename IceServerPropertiesTests to IceServerPropertiesTest 2022-02-16 18:11:53 +01:00
cruizba 285ff7b8f6 Fix wrong object in openvidu-java-client. Add e2e tests for customIceServers connection property in openvidu-java-client and openvidu-node-client 2022-02-16 17:36:41 +01:00
csantosm c24a6d4cd0 openvidu-components: Added participant input in participant item 2022-02-15 16:52:17 +01:00
csantosm 602ae5b66b openvidu-components: Added participant property in stream model 2022-02-15 16:44:09 +01:00
Juan Navarro 97656aa9d6 openvidu-browser: Use the RTCIceCandidate constructor on new candidates
The ice candidate event provides an "RTCIceCandidateInit" object, which
should be passed to the RTCIceCandidate() constructor, to build a proper
instance of RTCIceCandidate.
2022-02-15 16:32:53 +01:00
Juan Navarro e426d223af openvidu-browser: minor changes 2022-02-15 16:32:53 +01:00
Juan Navarro 2a5174a7b5 openvidu-browser: Catch errors on WebRTC calls 2022-02-15 16:32:53 +01:00
Juan Navarro 85f0e3ecd5 openvidu-browser: Use lowercase RID for simulcast layers
Firefox converts everything to lowercase and then the RIDs wouldn't
match in the internal mediasoup lookup! So better use all lowercase for
these identifiers.
2022-02-15 16:32:53 +01:00
Juan Navarro b5e645f13d openvidu-browser: Use Track.contentHint to configure WebRTC Sender 2022-02-15 16:32:53 +01:00
Juan Navarro f10649b40c openvidu-browser: Reduce 2 nesting levels in WebRtcPeer.createOffer 2022-02-15 16:32:53 +01:00
csantosm 301e284d36 openvidu-components: Renamed participant item component 2022-02-15 16:30:06 +01:00
csantosm cfef092457 openvidu-components: Renamed libConfig to openviduAngularConfig 2022-02-15 16:24:01 +01:00
csantosm 8f4ff06723 openvidu-components: Renamed webrtc service to openvidu service 2022-02-15 15:52:59 +01:00
csantosm 5a3430fab5 openvidu-components: Renamed connections to streams 2022-02-15 13:24:08 +01:00
cruizba bfbca2862d openvidu-server, openvidu-test-app: Fix e2e tests with new customIceServers connection property 2022-02-14 15:53:28 +01:00
csantosm 5d16528f82 openvidu-components: Updated library config 2022-02-14 14:12:58 +01:00
csantosm 3b46b7333b openvidu-components: Hidden audio detection when stream is not camera 2022-02-14 10:47:28 +01:00
csantosm ead068fbee openvidu-components: Improved video aspect ratios in layout 2022-02-14 10:41:55 +01:00
cruizba 6b8643d6c8 Merge branch 'master' of https://github.com/OpenVidu/openvidu into feature/custom-ice-servers 2022-02-13 20:43:39 +01:00
cruizba 5e19622198 openvidu-testapp: Show configured ICE servers on created RTCPeerConnections to check ice server configuration from OpenVidu 2022-02-13 20:37:57 +01:00
cruizba 4d579cf8b3 openvidu: Add OPENVIDU_WEBRTC_ICE_SERVERS configuration paramater 2022-02-13 19:33:41 +01:00
cruizba 40ed2c5efc openvidu-browser: Add cutomIceServers from 'joinRoom' rpc message 2022-02-11 22:38:51 +01:00
cruizba 0437cc9199 Add customIceServers to openvidu-node-client. Send customIceServers to openvidu-browser in 'joinRoom' response 2022-02-11 20:03:26 +01:00
csantosm af818b66f6 openvidu-browser: Fixed bug using speaking events
Subscribing to start/stop speaking events, the speechEvent object (which is undefined) is trying to invoke to 'on' method. This prevents the correct behaviour of the stop/start speaking events.
2022-02-11 17:33:45 +01:00
csantosm 956baad89f openvidu-components: Detected audio with start/stop speakings events
Added an audio wave icon for helping to detect when a publisher is speaking
2022-02-11 17:17:17 +01:00
csantosm 46cc1db560 openvidu-components: Changed methods visibility 2022-02-11 13:19:41 +01:00
csantosm 2d293a689e openvidu-components: Updated projection strategy
Replaces ng-templates by a custom structural directive
2022-02-11 13:18:50 +01:00
cruizba 784db2c830 Add Java client documentation 2022-02-10 20:30:28 +01:00
cruizba f88ea86bed deployment: Fix wrong OPENVIDU_PRO_ELASTICSEARCH_MAX_DAYS_DELETE to 7 2022-02-09 13:02:58 +01:00
cruizba fca9c7b2ab Tests for IceServerProperties. Integrate new attribute to Connection and generation token logic 2022-02-08 20:04:51 +01:00
cruizba 3274db8a61 Merge branch 'master' of https://github.com/OpenVidu/openvidu into feature/custom-ice-servers 2022-02-07 18:13:34 +01:00
csantosm bb8f0b752f openvidu-components: Refactored video enlarged feature 2022-02-07 15:40:05 +01:00
csantosm 28fe810f06 openvidu-components: Renamed participant input to stream 2022-02-07 12:17:54 +01:00
csantosm 51c63fa4c5 openvidu-components: Added stream notification projection 2022-02-07 10:34:02 +01:00
csantosm 76c51af4ef openvidu-component: Refactored components 2022-02-04 11:26:41 +01:00
csantosm 055e370669 openvidu-components: Removed rest service from library
The library will receive tokens and it does not generate them
2022-02-04 10:54:17 +01:00
Carlos Santos 3143557951
Merge pull request #690 from Flamenco/patch-2
Fix typo in docs
2022-02-03 17:18:51 +01:00
csantosm 00087a7dc7 openvidu-components: Updated the dynamic components injection
Allowed the custom components injection from the view instead of the config file.
2022-02-03 17:08:23 +01:00
Flamenco 8f69c0d1a4
Fix typo in docs 2022-02-03 10:35:37 -05:00
pabloFuente 14b89da6f3 openvidu-server: replace IdentifierPrefixes.MEDIA_ID with MEDIA_NODE_ID 2022-02-03 13:08:29 +01:00
pabloFuente 6fec7f7cd3 openvidu-server: add new IdentifierPrefixes.OPENVIDU_NODE_ID 2022-02-03 13:01:02 +01:00
cruizba ad778ff0d3 openvidu-server: Add customIceServers to REST post of connection 2022-02-02 18:44:19 +01:00
cruizba d7eae78372 Initial logic in openvidu-java-client to add to the ConnectionProperties class a new 'customIceServers' parameter 2022-02-02 18:08:35 +01:00
csantosm bfd21ecd1e openvidu-components: Moved panels into panel component 2022-02-02 13:47:06 +01:00
csantosm e4a6d9be1d openvidu-components: Added panel component 2022-02-02 13:42:33 +01:00
csantosm 55246abc44 openvidu-browser: Enabled warning logs in production mode 2022-02-02 12:31:27 +01:00
csantosm 93d6796fb3 openvidu-components: Refactored dynamic components loader 2022-02-01 13:41:26 +01:00
csantosm 5f0ffb4b3a openvidu-component: Loaded components dynamically
- For loading components with inputs/outputs directives, has been necessary to use the 'ng-dynamic-component' library because of unsupported on the official Angular issue  https://github.com/angular/angular/issues/15360
- Allowed the dynamic components load
- Grouped panels into panel component
2022-02-01 11:33:16 +01:00
cruizba e56ac82749 Bump openvidu-proxy in openvidu-pro 2022-01-30 20:31:33 +01:00
cruizba a61b6bb587 Bump docker-compose beta/dev versions 2022-01-30 20:22:28 +01:00
Juan Navarro 6e8e05553e fixup! openvidu-browser: Stream.typeOfVideo backwards compatibility fix
Add a TODO marker to remember that we have to change this when a
breaking-change release is done.
2022-01-28 15:17:05 +01:00
Juan Navarro 10f0961757 openvidu-server: Add Simulcast Publisher config
Also add setting to the .env file for PRO deployments (which can be
converted into ENTERPRISE, using mediasoup)
2022-01-28 14:59:24 +01:00
Juan Navarro eddf86f430 openvidu-server: sanitize string for custom ConnectionId 2022-01-28 14:16:04 +01:00
pabloFuente 425fe0983c openvidu-server: allow setting custom ConnectionId for debug purposes
Allows applications to set a custom string for the the connection ID,
which is a great help for debugging purposes, as it will appear in
all server logs and also will be used to set media server object names
(with obj.setName() API)
2022-01-28 14:12:21 +01:00
Juan Navarro 202e782c9d openvidu-server: disable Simulcast Publisher by default 2022-01-28 14:07:06 +01:00
Juan Navarro f05dc3db33 openvidu-server: rename Simulcast Publisher config
OPENVIDU_STREAMS_VIDEO_SIMULCAST --> OPENVIDU_WEBRTC_SIMULCAST
2022-01-28 14:06:36 +01:00
Juan Navarro a11210a7ee openvidu-browser: adaptive simulcast config depending on source video
Do not blindly enable simulcast; instead, analyze the properties of the
source track in order to decide upon a good configuration:

* Take into account Google Chrome decision table which dictates how many
simulcast layers will be sent at most:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/media/engine/simulcast.cc;l=90-114;drc=d3251968d1b3dbe7e1353a3f15970b47173103e9

* Limit bitrate and resolution on webcam videos, or framerate on
screenshare videos.
2022-01-28 14:03:26 +01:00
Juan Navarro 786f1009fb openvidu-browser: Stream.typeOfVideo backwards compatibility fix
Stream.typeOfVideo was a string and cannot be changed into an Enum
without breaking some client applications.

However, it is possible for us to start using an Enum internally, and
exporting this property as a union of strings, which is what is
generated by "keyof typeof Enum".
2022-01-28 13:56:46 +01:00
pabloFuente 4fe0a4fda2 openvidu-browser: add TypeOfVideo 2022-01-27 14:42:01 +01:00
pabloFuente f158119d68 openvidu-browser: error message when calling deprecated LocalRecorder#record(string) 2022-01-26 18:51:20 +01:00
pabloFuente 925a51482d openvidu-browser: replace mime-types with mime dependency 2022-01-26 18:34:50 +01:00
pabloFuente 8976cba6ce openvidu-browser: update dependencies versions 2022-01-26 17:59:31 +01:00
pabloFuente 3aae9a0ab1 openvidu-browser: revert wrong imports 2022-01-26 17:59:15 +01:00
pabloFuente 0010ac1157 openvidu-browser: install inherits and events packages 2022-01-26 17:38:23 +01:00
pabloFuente 4ca3839821 openvidu-browser: fix LocalRecorder 2022-01-26 17:23:16 +01:00
cruizba 18f3f76b22 Revert "deployment: Disable rollback temporarly on creating AMIs"
This reverts commit dc248cae71.
2022-01-26 16:28:26 +01:00
csantosm 4ebc22d9d0 openvidu-components: Added constructor in participant abstract class 2022-01-26 16:08:04 +01:00
csantosm e16816422c openvidu-componentS: Decoupled panels from openvidu layout 2022-01-26 16:06:15 +01:00
csantosm 9f9f09c8c5 openvidu-components: Renamed components and models
* ov-room to ov-session
* ov-participant to ov-stream
* ov-chat to ov-chat-panel
* ov-participant-panel to ov-participants-panel
* ConnectionWrapper to StreamModel
2022-01-26 16:01:22 +01:00
Pablo Fuente Pérez 6d37e4ce1f
Merge pull request #688 from Flamenco/patch-2
Check for outboundStreamOpts before accessing it
2022-01-26 14:31:06 +01:00
cruizba dc248cae71 deployment: Disable rollback temporarly on creating AMIs 2022-01-26 12:52:39 +01:00
pabloFuente ad8e8938d4 openvidu-browser: ensure Promise return on every resolve and reject 2022-01-26 12:18:05 +01:00
csantosm e9e3bbaf09 Refactored participant preview modal
- Commented not necessary code in user-settings which forced a new publisher init if device labels were empty
- Added more conditional cases initializing the default publisher in webrtc service
- Added video background color
2022-01-26 11:14:15 +01:00
Flamenco 39c9cec7d1
Ensure video element mirroring is removed
When reusing a video element between a local stream with mirroring, and a remote stream with no mirroring, the element's mirror transform was not getting removed.
2022-01-25 14:11:31 -05:00
Flamenco 75b88175cb
Check for outboundStreamOpts before accessing it
This method should be the same as the others in regards to checking for valid property.
It seems the extra logic for `isElectron` evaded the correct checking when calling from an incoming stream.

Error reported:
TypeError: Cannot read properties of undefined (reading 'publisherProperties')
```
2022-01-25 12:49:23 -05:00
csantosm 3c1876769b Fixed openvidu-webcomponent 2022-01-25 12:05:37 +01:00
csantosm a73230ac79 openvidu-components: Added webcomponent
Now it's possible generate a webcomponent using the openvidu-angular library.
2022-01-24 11:19:19 +01:00
Juan Navarro 46c7516764
Merge pull request #667 from OpenVidu/forcecodec-preferred
ForcedVideoCodec default set to MEDIA_SERVER_PREFERRED
2022-01-20 12:11:46 +01:00
csantosm 31f5206f01 openvidu-components: Added prettier 2022-01-20 12:07:42 +01:00
Juan Navarro bfa2ad8c65 openvidu-test-e2e: Support MEDIA_SERVER_PREFERRED and NONE as test codecs
Because this test is always run only for Kurento and Chrome, we know
what to select here in each case.
2022-01-20 12:00:01 +01:00
Juan Navarro 727a872d9f openvidu-test-e2e: Add new key 'forcedVideoCodecResolved' to API tests 2022-01-20 12:00:01 +01:00
Juan Navarro 0cb9180ec5 openvidu-server+clients: add new forcedVideoCodecResolved session property
Fill a new SessionProperties member "forcedVideoCodecResolved" to
contain the resolved value of "forcedVideoCodec", once the new
MEDIA_SERVER_PREFERRED has been taken into account and translated into
the appropriate option for each media server.

The logic to decide how to translate MEDIA_SERVER_PREFERRED into a
concrete forcedVideoCodec value is placed once in the REST entry point
of session creation (SessionRestController.java). Afterwards,
SessionProperties is just used as a simple storage for all session
features, and serialized / passed around between server and client.
2022-01-20 12:00:01 +01:00
Juan Navarro 0262c85ac0 openvidu-server: remove duplicated serialization of SessionProperties
Let SessionProperties serialize itself, instead of doing it externally
on the Session classes.
2022-01-20 12:00:01 +01:00
Juan Navarro 32fd093cf3 openvidu-server: add MEDIA_SERVER_PREFERRED as default for ForcedVideoCodec
MEDIA_SERVER_PREFERRED: A recommended choice is done for you,
based on the media server that is currently in use.
This is the default setting, and is equivalent to these values:
- For *mediasoup*, `NONE` is selected.
- For *Kurento*, `VP8` is selected.
2022-01-20 12:00:01 +01:00
csantosm 3c97ceac37 openvidu-components: Added openvidu videoconference components 2022-01-20 11:53:56 +01:00
csantosm 673058381f openvidu-components: Renamed library to openvidu-angular 2022-01-20 09:58:12 +01:00
csantosm 3fa674efd6 Added openvidu-components-angular project 2022-01-19 17:25:09 +01:00
pabloFuente 0b26735b7b openvidu-test-e2e: give more time to crossBrowserTest 2022-01-18 15:42:57 +01:00
pabloFuente 1965a6b44f Update doc API with new Typedoc camelcase syntax in links 2022-01-14 13:31:26 +01:00
pabloFuente 10e11072ab openvidu-test-e2e: fix number of JSON keys in restApiProTest 2022-01-13 14:02:23 +01:00
pabloFuente c30091ee06 openvidu-browser: new event documentation 2022-01-13 13:54:34 +01:00
pabloFuente 58edee6b97 openvidu-browser: extend accessDialogOpened event time from 1500 to 2000 ms 2022-01-13 13:50:01 +01:00
pabloFuente e46a93f42c Jenkinsfile: fix openvidu-testapp compilation 2022-01-13 12:18:16 +01:00
pabloFuente 9f20cc2485 openvidu-browser: update Copyright date 2022-01-13 11:18:47 +01:00
pabloFuente 200c1db526 openvidu-browser: fix TypeDoc config to properly exclude unwanted folders 2022-01-12 03:38:45 +01:00
pabloFuente 3763904f73 openvidu-browser: update TypeDoc for TS compatibility 2022-01-12 03:02:31 +01:00
pabloFuente 695c13769c openvidu-browser: update TS version. Fix "signal:X" event typings 2022-01-12 01:48:40 +01:00
pabloFuente 4e304b18d4 openvidu-browser: fix RTCIceCandidate and Blob errors 2022-01-12 01:36:53 +01:00
pabloFuente 16682c5456 Dashboard: update Angular script commands location in package.json 2022-01-10 15:41:05 +01:00
pabloFuente cb48033e72 Update to Angular Material 13 2022-01-10 15:34:12 +01:00
pabloFuente 21e81baa03 Update to Angular 13 2022-01-10 15:30:18 +01:00
pabloFuente a976ab8390 Update to Angular Material 12 2022-01-10 15:19:10 +01:00
pabloFuente 4dd688efa8 Update angular/flex-layout dependency 2022-01-10 15:16:46 +01:00
pabloFuente e8ee49c396 Update to Angular 12 2022-01-10 15:13:40 +01:00
pabloFuente 82bd984bbe openvidu-browser: add event maps to achieve typings for all Events 2022-01-10 12:46:39 +01:00
pabloFuente 777b329e9f openvidu-browser: optional handler property in Session.off method 2022-01-10 11:39:24 +01:00
pabloFuente e09d0f171e openvidu-browser: hide semver imports. Fix RTCIceCandidate with null "address" 2022-01-10 11:37:31 +01:00
Pablo Fuente Pérez 358fb1af3a
Merge pull request #678 from OrkhanAlikhanov/master
openvidu-browser: improve typings for session event dispatcher methods
2022-01-10 11:36:06 +01:00
Juan Navarro 8e5f5d4cf4
openvidu-server, browser: Add Simulcast Publisher config (#680)
Simulcast is a per-Publisher configuration that allows to enable
Simulcast senders on the client's PeerConnection of each sender.

Simulcast is a WebRTC feature that sends multiple simultaneous streams
with different video qualities, in order to let the media server decide
which quality is best for which Subscriber on the receiving side.

Enabled by default.
2022-01-05 15:12:51 +01:00
Juan Navarro 2d93abbd02 openvidu-test-e2e: fix wrong order of args in Assert.assertEquals 2021-12-29 13:31:38 +01:00
Orkhan Alikhanov 250e5293e9 openvidu-browser: improve typings for session event dispatcher methods 2021-12-27 17:28:13 +04:00
Juan Navarro 4c6e388cab openvidu-test-e2e: Allow optional webhook properties in test
Set `matchKeys` to `false`, because the webhook properties in the server
response are actually **optional**, so they cannot be enforced here.

When the server runs with OPENVIDU_WEBHOOK=false, then none of
OPENVIDU_WEBHOOK_ENDPOINT, OPENVIDU_WEBHOOK_HEADERS, or
OPENVIDU_WEBHOOK_EVENTS will exist on the actual JSON.
2021-12-27 11:24:41 +01:00
Juan Navarro 162871a7dd deployment: change IP discovery script to match mediasoup-controller
Change the script (error checking, code style, etc) to match the one
used in openvidu-mediasoup-controller, so both are easier to maintain.

* Relevant change: use wget (leaner, faster) instead of curl.
* All others are minor changes.
2021-12-24 16:05:41 +01:00
cruizba 3a59b7b921 deployment: Try to autodiscover Public IP via HTTP if DNS outgoing traffic is not enabled 2021-12-24 14:17:51 +01:00
pabloFuente e6b4f23fcf openvidu-browser: reconnection support for OpenVidu Enterprise 2021-12-23 15:28:23 +01:00
pabloFuente 24ba648015 openvidu-browser: heartbeatRequestTimeout set to 5 seconds 2021-12-23 11:30:55 +01:00
pabloFuente 18c7e5d524 openvidu-browser: close WebSocket with code and reason 2021-12-23 11:18:42 +01:00
pabloFuente c8597b450e openvidu-browser: remove unused method 2021-12-23 11:13:09 +01:00
pabloFuente 8748eea15f Update kurento-java version to 6.16.3 2021-12-21 17:35:48 +01:00
cruizba ada2b259b7 Upload gitignore 2021-12-20 14:41:18 +01:00
cruizba 334a87acf8 Patch elasticsearch to use log4j 2.17.0 2021-12-20 14:36:35 +01:00
cruizba 3886cf1b45 deployment: On nightly, don't change tag of some images 2021-12-17 10:27:03 +01:00
cruizba 581aad38d5 Bump Dockerfile redis version 2021-12-16 23:00:39 +01:00
cruizba 1e085e5990 deployment: Use own patched elasticsearch image 2021-12-16 21:29:51 +01:00
cruizba 46a6176432 Bump nginx version. Restart nginx always 2021-12-16 17:36:38 +01:00
cruizba edfbe3104e deployment: fix nginx main process. Update nginx version 2021-12-16 17:27:32 +01:00
pabloFuente ea59ad0519 openvidu-testapp: default values for SessionProperties dialog 2021-12-16 14:54:08 +01:00
pabloFuente e620eab7d9 Update kurento-java to 6.16.2 2021-12-13 16:48:09 +01:00
cruizba 9e7a073653 Deployment: use pip3 command to install cfn-hub on all environments 2021-12-11 16:47:26 +01:00
cruizba 51e1348825 Deployment: use pip3 command to install cfn-hub 2021-12-11 16:27:59 +01:00
cruizba c6dac1ad4a deployment: Use aws-cfn with python3 instead of legacy python 2 2021-12-11 16:20:06 +01:00
cruizba 0b6fb08022 deployment: ec2-instance-connect needs to be installed in AMIs 2021-12-11 15:47:51 +01:00
cruizba 54e04d7e06 Check to install only pip in AMIs in OpenVidu CE 2021-12-11 15:29:16 +01:00
pabloFuente c7f247fbe6 Test commit trigger, again 2021-12-03 11:49:10 +01:00
pabloFuente da2758a93e Test commit trigger, again 2021-12-03 11:45:27 +01:00
pabloFuente 2fbbc5e891 Test commit trigger 2021-12-03 11:38:49 +01:00
pabloFuente 055d99206b openvidu-server: more FormatChecker unit tests 2021-12-02 14:38:01 +01:00
pabloFuente 31464df41b openvidu-server: check null on turnCredentials when leaving session 2021-12-02 12:12:48 +01:00
pabloFuente e6a495f2a4 openvidu-test-e2e: fix tests after recording name refactoring 2021-12-02 12:04:35 +01:00
pabloFuente 0dd32610ae openvidu-server: fix name for recording containers 2021-12-02 12:03:43 +01:00
pabloFuente 7d8221de73 openvidu-server: change recording number delimiter from - to ~ 2021-12-01 17:58:28 +01:00
pabloFuente 2aecdfad1f openvidu-server: remove unused containers Map in ComposedRecordingService 2021-12-01 17:08:13 +01:00
pabloFuente 024230a87c Add FormatChecker unit test 2021-12-01 15:43:01 +01:00
pabloFuente e73ebfee78 Fix KurentoClient disconnect handler after Netty exception 2021-11-30 19:24:30 +01:00
pabloFuente 7470261345 openvidu-server: add OpenviduConfig#asOptionalStringAndNullIfBlank 2021-11-24 17:16:01 +01:00
Juan Navarro 5ea339c3cd openvidu-server: warn Publisher about useless usage of AllowTranscoding 2021-11-24 15:54:15 +01:00
pabloFuente ecd05262be openvidu-test-e2e: improved loadFolderFromCache 2021-11-18 19:38:32 +01:00
pabloFuente 2b6752fd73 openvidu-test-e2e: improve storeFolderInCache 2021-11-18 19:22:32 +01:00
pabloFuente 7f24241bc4 openvidu-test-e2e: improved storeFolderInCache 2021-11-18 18:50:52 +01:00
pabloFuente 75da9a8b20 openvidu-test-e2e: fix mv commands in commonFunctions.groovy cache methods 2021-11-18 18:05:18 +01:00
pabloFuente 7d0ea25ec5 openvidu-test-e2e: create destiny folder on loadFolderFromCache method 2021-11-18 17:48:59 +01:00
pabloFuente 00f67fa56c openvidu-test-e2e: commonFunctions.groovy mkdir fix 2021-11-18 17:40:04 +01:00
pabloFuente 48ebf2d36b openvidu-test-e2e: add cache management to commonFunctions.groovy 2021-11-18 17:36:02 +01:00
pabloFuente b8e4e48f2e Add default REDIS_BINDING to docker-compose.yml 2021-11-17 19:06:01 +01:00
pabloFuente 0fdfc819a6 openvidu-test-e2e: delete extra repository folder on commonFunctions.groovy 2021-11-17 15:47:46 +01:00
pabloFuente 03b57c00cf openvidu-test-e2e: more flexible composedQuickStartRecordTest 2021-11-15 14:29:17 +01:00
pabloFuente e63f44d856 openvidu-test-e2e: remove empty file 2021-11-15 14:14:21 +01:00
pabloFuente 28b1763b31 openvidu-test-e2e: less restrictive unhandled alert exception 2021-11-15 12:37:28 +01:00
pabloFuente 13317a888d openvidu-test-e2e: reset event thread on alert opened 2021-11-15 12:20:57 +01:00
pabloFuente e60ac50d26 WebhookIntegrationTest 2021-11-14 23:16:54 +01:00
pabloFuente 22c7e08448 openvidu-test-e2e: keep increasing webhook event timeout 2021-11-13 22:40:47 +01:00
pabloFuente 23cccce323 openvidu-test-e2e: give more time to Webhook events on ip camera test 2021-11-13 17:51:02 +01:00
pabloFuente 5cfdd5d039 openvidu-test-e2e: more time for events in wehookTest 2021-11-13 01:18:40 +01:00
pabloFuente 90b075cc7f openvidu-server: support for rtsp SSL IP cameras (rtsps://...) 2021-11-12 18:45:05 +01:00
pabloFuente c9aed9da7b openvidu-server: revert commit reversion, without polling thread bug 2021-11-12 18:35:58 +01:00
pabloFuente c6687efe0e Revert "openvidu-test-e2e: fix restApiProTest"
This reverts commit 10ad16464c.
2021-11-12 18:09:52 +01:00
pabloFuente a281c5b2f9 openvidu-test-e2e: wait for containers to be removed at @AfterEach 2021-11-12 15:35:29 +01:00
pabloFuente 73df3cc969 openvidu-test-e2e: refactor testcontainers 2021-11-12 13:41:18 +01:00
pabloFuente 10ad16464c openvidu-test-e2e: fix restApiProTest 2021-11-11 18:50:32 +01:00
pabloFuente 8d40507ccd openvidu-test-e2e: headless browsers 2021-11-11 16:40:30 +01:00
pabloFuente a604865f65 openvidu-server: typo fixed in RpcHandler log 2021-11-11 12:01:55 +01:00
pabloFuente f81735d7f9 openvidu-server: remove unused imports. Update deprecated docker-java methods 2021-11-10 19:45:00 +01:00
pabloFuente 9685ce4f03 Update docker-java from 3.2.5 to 3.2.12 2021-11-10 19:39:58 +01:00
pabloFuente fe0869e9fe openvidu-test-browsers: move waitWithNewTime from OpenViduTestappUser to BrowserUser 2021-11-10 15:24:30 +01:00
pabloFuente e5f87f58e8 openvidu-test-e2e: fix restApiFetchForce 2021-11-10 15:01:43 +01:00
pabloFuente 166ab0ba83 openvidu-test-e2e and openvidu-testapp: fix openviduSdkFetchTest 2021-11-10 13:24:46 +01:00
pabloFuente 09b3bbda62 openvidu-test-e2e: OpenViduTestappUser refactoring 2021-11-10 11:20:13 +01:00
pabloFuente 930676dc88 openvidu-test-e2e: setupBrowserAndConnectToOpenViduTestapp 2021-11-10 10:10:18 +01:00
pabloFuente 6b60d00eae Add <version.openvidu.test.e2e> to parent pom.xml 2021-11-09 19:18:59 +01:00
pabloFuente fd7412462d openvidu-test-e2e: move exportable classes to src/main/java from src/test/java 2021-11-09 18:44:23 +01:00
pabloFuente cd847c1daf openvidu-server: new certificate with better "-name" flag 2021-11-09 17:10:59 +01:00
pabloFuente 00d3e429af openvidu-server: updated certificate 2021-11-09 16:26:17 +01:00
pabloFuente 22faa51ad7 openvid-test-e2e: print wrong thumbnail base64 2021-11-09 11:23:08 +01:00
pabloFuente 47058c6292 Update Junit Jupiter versions. RecordingManager#checkRecordingPaths to protected 2021-11-09 01:17:48 +01:00
pabloFuente d380d0359e openvidu-test-e2e: disable broken Chrome Android test 2021-11-08 12:36:15 +01:00
pabloFuente 319a5a1e59 openvidu-test-e2e: give android container 4GB shm-size 2021-11-08 11:38:04 +01:00
pabloFuente 6ac5d98211 openvidu-test-e2e: increment container start timeout for Android container 2021-11-08 10:44:47 +01:00
pabloFuente fd287c7d2c openvidu-test-e2e: update custom external layout from port 5555 to 4114 2021-11-08 10:03:08 +01:00
pabloFuente da39561ca3 Rollback to selenium 3. Android Chrome test 2021-11-08 00:41:04 +01:00
cruizba 594cd24706 openvidu-server: refactor with method Kms.getMediaServer to get which media server is running and Add it to Kms.toJsonExtended as attribute 2021-11-05 21:57:07 +01:00
Juan Navarro cff5e634f5 openvidu-server: unify debug message in connect() methods 2021-11-05 15:52:47 +01:00
Juan Navarro 142348fcef openvidu-server: gatherCandidates() returns immediately, no need for async 2021-11-05 15:52:47 +01:00
Juan Navarro aba3311076 openvidu-browser: minor comment to match same in android & kurento 2021-11-05 15:52:47 +01:00
cruizba ddaf34a475 deployment: openvidu_health_check - fix error when 'about:webrtc' page refresh its data 2021-11-05 15:33:46 +01:00
cruizba 6c122cd645 deployment: openvidu_health_check fix timeout on firefox 2021-11-05 13:37:51 +01:00
cruizba 1eba0f3602 deployment: openvidu_health_check fix timeout 2021-11-05 12:26:26 +01:00
pabloFuente e619fd06f8 openvidu-test-browsers: set dimensions manually 2021-11-05 00:39:09 +01:00
pabloFuente 4c87b03ad5 Downgrade to compatible Spring Boot version 2.3.12.RELEASE 2021-11-05 00:37:18 +01:00
pabloFuente 906a30ed0b Update to Spring Boot 2.5.6 2021-11-05 00:22:35 +01:00
cruizba 2c4596a73f deployment: openvidu_health_check can test OpenVidu CE/PRO/ENTERPRISE. Cache web drivers in Docker image 2021-11-04 16:47:35 +01:00
pabloFuente e8c39c9242 Jenkinsfile: update commonFunctions browser containers pull with specific versions 2021-11-04 16:08:16 +01:00
pabloFuente de46b5ce4d openvidu-test-e2e: provide browser versions as env variables 2021-11-04 15:10:28 +01:00
pabloFuente 61bd4cf2fc openvidu-test-e2e: remove webdriver setup for testcontainers (they already include it!) 2021-11-04 15:02:51 +01:00
pabloFuente 47792608ce openvidu-test-e2e: protect dispose method @AfterEach from possible NullPointer 2021-11-04 14:10:32 +01:00
pabloFuente 3baa72396f Jenkinsfile: fix test launch with REMOTE_URL_EDGE env variable 2021-11-04 14:06:40 +01:00
pabloFuente dcdcbd1055 openvidu-test-e2e: testcontainers + edge test 2021-11-04 13:17:58 +01:00
cruizba e32330ad95 deployment: find_element instead of find_elements in openvidu_health_check 2021-11-03 20:51:03 +01:00
Carlos Ruiz Ballesteros 00d2e3e5fa
deployment: minor comment fixes in openvidu_helth_check 2021-11-03 20:26:46 +01:00
cruizba 83dade9e9e deployment: print candidates in openvidu-health-checker docker image test 2021-11-03 20:22:52 +01:00
Carlos Ruiz Ballesteros 4cdae4601d
Update README.md 2021-11-03 12:09:37 +01:00
Carlos Ruiz Ballesteros da3239d245
Update README.md 2021-11-03 12:09:19 +01:00
cruizba 5f7a88c68f deployment: Experimental openvidu-health-checker self-contained docker image to check openvidu deployments 2021-11-03 12:07:43 +01:00
pabloFuente abce613468 Jenkinsfile: increase shm size to 2g 2021-11-03 11:22:01 +01:00
pabloFuente e4d0123682 openvidu-test-e2e: fix openViduJavaClientTestIpCamAndTranscoding 2021-11-03 11:09:53 +01:00
pabloFuente e242255da4 Jenkinsfile: increase shm-size from 1g to 1.5g 2021-11-03 10:34:17 +01:00
Pablo Fuente Pérez e9b216f84e
Update commonFunctions.groovy
Jenkinsfile: return true on removeStrandedContainers
2021-11-03 09:32:37 +01:00
pabloFuente 788eb61ef9 openvidu-test-only: divide tests to reduce @OnlyKurento even more 2021-11-03 01:30:49 +01:00
pabloFuente ef88b86e01 Jenkinsfile: improved removeStrandedContainers 2021-11-02 14:26:46 +01:00
pabloFuente ada73560d6 openvidu-server: disable KurentoClient remote operations for stopping INDIVIDUAL recording upon media server reconnection 2021-11-02 13:37:12 +01:00
Juan Navarro a7332aac70
openvidu-server: add MKV recording profile as part of MediaServer enum (#658)
Uses the MediaServer enum to contain information that is specific about
each particular media server. Specifically,

* kurento must record with the WEBM profile and ".webm" file extension
* mediasoup must record with the MKV profile and ".mkv" file extension

Integrating this as part of the global Openvidu config object makes it
trivial to replace the static or hardcoded lines with others that simply
obtain the data from the current media server mode in use.
2021-11-02 11:40:42 +01:00
pabloFuente 4882bb89a2 openvidu-test-e2e Docker image: update Docker and node installations 2021-11-02 11:20:00 +01:00
pabloFuente 83a71e41ab Jenkinsfile: do not remove stranded containers at finally 2021-10-31 15:36:00 +01:00
pabloFuente a30fd89d85 Jenkinsfile: fix mediasoup-controller container launch with env variables 2021-10-31 14:18:16 +01:00
pabloFuente 1516fa7387 openvidu-test-e2e: extend webrtcConnectionCreated webhook time 2021-10-30 20:13:05 +02:00
pabloFuente 9b599ebb6a openvidu-test-e2e: mediaServerReconnect tests 2021-10-30 19:28:30 +02:00
pabloFuente 82115a7ce8 Jenkisnfile: avoid repeating mvn test on openvidu-server build command 2021-10-30 14:33:35 +02:00
pabloFuente fa422bfc02 Jenkinsfile: separated method for removeStrandedContainers 2021-10-29 20:38:39 +02:00
pabloFuente f90c4f5e6e Jenkinsfile: revert single quote script blocks to double quotes 2021-10-29 20:30:09 +02:00
pabloFuente 24607dabb5 openvidu-test-e2e: double quotes and curly brackets in commonFunctions.groovy 2021-10-29 20:26:50 +02:00
pabloFuente a04db053d3 Jenkinsfile: single quotes to double quotes. Env variables with curly brackets 2021-10-29 20:20:43 +02:00
pabloFuente f7ffea35a4 Jenkinsfile: fix single quote param literal 2021-10-29 20:07:33 +02:00
pabloFuente 0b8df4c4dd openvidu-test-e2e: split tests to extend mediasoup coverage 2021-10-29 19:57:23 +02:00
pabloFuente 73be3e808b Jenskinsfile: try setting env variable outside of script 2021-10-29 19:28:59 +02:00
pabloFuente 247ce5ad4b Jenkinsfile: change parameters of docker images 2021-10-29 19:14:41 +02:00
pabloFuente 8e31d80fde Jenkinsfile: fix path cd 2021-10-29 15:27:46 +02:00
pabloFuente 89f60fa0f5 Jenkinsfile: openvidu-test-e2e build on its own stage 2021-10-29 15:17:08 +02:00
pabloFuente 81e4421a0b Jenkinsfile: fix openViduE2ETest function 2021-10-29 15:12:16 +02:00
pabloFuente c1d5beb754 openvidu-test-e2e: MEDIASOUP_CONTROLLER_DOCKER_VERSION to MEDIASOUP_CONTROLLER_VERSION 2021-10-29 14:44:38 +02:00
pabloFuente 2f0607bdf3 Jenkinsfile: KMS_IP always to docker gateway 2021-10-29 14:01:31 +02:00
pabloFuente 658c1d5775 openvidu-test-e2e: single container openvidu/openvidu-test-e2e:focal 2021-10-29 13:49:34 +02:00
pabloFuente cacb7d8685 Jenkinsfile: fix 2021-10-29 13:44:02 +02:00
pabloFuente ff50fa45f0 Use kurento docker image with tests. Infinite media server reconnection on CE 2021-10-29 13:38:20 +02:00
pabloFuente edb5dd36ff openvidu-server: deprecated recordingStarted/recordingStopped CDR events removed 2021-10-28 14:06:48 +02:00
pabloFuente 8e418bfd16 Check openvidu-browser and openvidu-server compatibility 2021-10-27 14:04:19 +02:00
pabloFuente 1a244f68cd Jenkinsfile: fix echo 2021-10-26 15:45:17 +02:00
pabloFuente 6a165ddf16 Jenkinsfile: show rm path on commonFunctions.groovy 2021-10-26 15:42:38 +02:00
pabloFuente a25ad7e4e8 Jenkinsfile: more parallelization of commonFunctions.groovy 2021-10-26 15:33:27 +02:00
pabloFuente 0ba234f794 Jenkinsfile: parallelization of commonFunctions.groovy#prepareTestingEnvironment 2021-10-26 15:26:41 +02:00
pabloFuente e867e7963d Jenkinsfile: check env variables instead of parameterizing them 2021-10-26 15:21:08 +02:00
pabloFuente e80c17cc04 Jenkinsfile: pass parameters to commonFunctions.groovy 2021-10-26 15:15:56 +02:00
pabloFuente d51e0ca4a5 Jenkinsfile: minor aesthetical adjustments 2021-10-26 15:06:17 +02:00
pabloFuente 2b00cf8d7a Jenkinsfile: add RelativeTargetDirectory 2021-10-26 14:59:15 +02:00
pabloFuente 7afbb8345c Jenkinsfile: fix script load 2021-10-26 14:52:35 +02:00
pabloFuente 2e8536064b Jenkinsfile: use checkout plugin instead of git clone command 2021-10-26 14:41:26 +02:00
pabloFuente a55ad8cd22 Jenkinsfile: fix commonFuncitons.groovy script path load 2021-10-26 14:07:26 +02:00
pabloFuente 49d09f0a2b Jenkinsfile: separate files 2021-10-26 10:58:52 +02:00
Juan Navarro 88d5fd97a7 openvidu-server: remove ForceCodec=NONE for mediasoup
Allow forcing a specific codec when mediasoup is the media server. This
requires changes in the recording! Otherwise, incompatible combinations
might occur. For example, currently WEBM is a container that works ok
for VP8 and VP9 video, but won't work with H.264.
2021-10-26 10:32:57 +02:00
pabloFuente 59af2871d8 Jenkinsfile: fix permissions 2021-10-25 17:23:55 +02:00
pabloFuente 6485cb3232 Jenkinsfile: copy fake media files to /opt/openvidu 2021-10-25 17:12:28 +02:00
cruizba 1400355aaf deployment: Stop before start openvidu to run everything correctly after machine reboot 2021-10-25 16:32:45 +02:00
pabloFuente 8fb6dfe2f3 Jenkinsfile: fix broken parallelism 2021-10-25 14:31:42 +02:00
pabloFuente e45d585b2d Jenkinsfile: fix curl permissions with sudo 2021-10-25 12:50:01 +02:00
pabloFuente 483238f69e Jenkinsfile: test with simplified openvidu-cache 2021-10-25 12:46:49 +02:00
pabloFuente fe34c687b9 Jenkinsfile: fix curl command 2021-10-25 11:30:05 +02:00
pabloFuente ad8b7e6053 Jenkinsfile: wget changed to curl 2021-10-25 11:22:20 +02:00
pabloFuente 1be02a6b45 Jenkisnfile: concat binds array correctly 2021-10-25 10:35:27 +02:00
pabloFuente 230e17743d Jenkinsfile: update variable initialization 2021-10-25 10:32:51 +02:00
pabloFuente e826d4939a Jenkinsfile: export binds to a variable 2021-10-22 19:55:15 +02:00
pabloFuente 2ec9c6927a Jenkinsfile: mount /opt/openvidu/barcode.y4m file 2021-10-22 19:41:56 +02:00
pabloFuente 08aa82afc4 Jenkinsfile: fix wget 2021-10-22 17:30:24 +02:00
pabloFuente 65f492d5da Jenkinsfile: change cache strategy to /opt/openvidu-cache 2021-10-22 17:28:26 +02:00
pabloFuente 09ac981df0 Jenkinsfile: improved parallelism 2021-10-22 17:15:47 +02:00
pabloFuente 0b4f967e40 Jenkisfile: fix /opt/openvidu/removable path 2021-10-22 16:47:33 +02:00
pabloFuente 68c356f7af Jenkinsfile: /opt/openvidu/removable/recordings on mediasoup container launch 2021-10-22 15:40:44 +02:00
pabloFuente 49206ee03d openvidu-test-e2e docker images built with new flags 2021-10-22 15:33:53 +02:00
pabloFuente 9e2a64ee55 Jenkinsfile: rollback (always download custom layout) 2021-10-22 15:29:49 +02:00
pabloFuente 5ad2e4d975 Jenkinsfile: /opt/openvidu/removable 2021-10-22 15:20:56 +02:00
pabloFuente 0dbeb14d7c Jenkinsfile: improved file download. .m2 folder mounted 2021-10-22 15:12:03 +02:00
pabloFuente 4450406aa7 Jenkinsfile: add --no-transfer-progress to all mvn commands 2021-10-22 14:29:58 +02:00
cruizba a674c78049 jenkins: Remove unnecesary archive 2021-10-22 13:57:51 +02:00
pabloFuente c2c41f41bd Jenkinsfile: silent npm and mvn commands 2021-10-22 13:56:34 +02:00
pabloFuente 39679f0a0a Jenkinsfile: remove unused 'cd ..' 2021-10-22 13:44:11 +02:00
cruizba f60bad0467 Archive artifacts individually in each stage 2021-10-22 13:38:31 +02:00
cruizba 9a7f54e8cd jenkins: Missing save artifacts after kurento e2e tests 2021-10-22 13:29:32 +02:00
pabloFuente 126183a9e8 Jenkinsfile: more parallelization 2021-10-22 13:24:43 +02:00
pabloFuente 68b1f5e2ad Jenkinsfile: global OPENVIDU_COMMIT. Remove individual commits for artifacts 2021-10-22 13:22:26 +02:00
pabloFuente d234639423 Jenkinsfile: name parallel tasks without stages 2021-10-22 12:26:13 +02:00
pabloFuente cffa50ddab Jenkinsfile: more parallel tasks 2021-10-22 12:12:22 +02:00
pabloFuente f693db6f15 openvidu-testapp: fix PublisherPropertiesDialogComponent type error 2021-10-22 12:11:09 +02:00
pabloFuente fa3d4f6097 Jenkinsfile: fix parallel syntax 2021-10-22 11:57:00 +02:00
pabloFuente 1d53c87500 Jenkinsfile: fix parallel syntax 2021-10-22 11:47:00 +02:00
pabloFuente 7b8afcc21a Jenkinsfile: parallel stages 2021-10-22 11:38:40 +02:00
pabloFuente 1a2dd5b203 openvidu-testapp: improve filter selection 2021-10-21 19:35:26 +02:00
cruizba 50418dac6a Save logs for kurento and mediasoup environments 2021-10-21 19:21:43 +02:00
cruizba 377f338f09 jenkins: stages with e2e tests inside try catch 2021-10-21 19:19:41 +02:00
pabloFuente 43a045bec6 openvidu-testapp: add ids to PublisherProperties inputs 2021-10-21 17:23:39 +02:00
cruizba 79ceed2c45 Set build as FAILURE on any test failure 2021-10-21 16:44:25 +02:00
Carlos Ruiz Ballesteros bd74b9b030
Merge pull request #660 from OpenVidu/mediasoup-tests
openvidu-server-e2e: E2E Test for mediasoup
2021-10-21 15:13:52 +02:00
cruizba c2ec01d38c openvidu-server-e2e: E2E Test for mediasoup 2021-10-21 14:35:11 +02:00
pabloFuente be7609b0c6 openvidu-testapp: remove unused properties of TestFeedService#pushNewEvent 2021-10-21 13:54:16 +02:00
pabloFuente 2da34db57e openvidu-testapp: build Event object for reconnecting and reconnected events 2021-10-21 12:06:33 +02:00
pabloFuente 5aed7fa9f0 openvidu-testapp: reconnect on server failure 2021-10-19 18:03:58 +02:00
pabloFuente e785519b33 openvidu-test-e2e: individual dynamic recording test allows other recording extensions 2021-10-19 16:53:58 +02:00
pabloFuente d260bbceaa openvidu-test-browsers: fix webm file extension limitations 2021-10-19 13:47:20 +02:00
pabloFuente 6bf0797df6 openvidu-server: removed ServletCustomizer (https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/server/MimeMappings.java) 2021-10-19 13:02:07 +02:00
cruizba fdc6449443 deployment: Rollback if nightly 2021-10-18 23:16:44 +02:00
cruizba 7d214f5664 deployment: Missing 'pushd' in AMIs CFs 2021-10-18 22:22:34 +02:00
cruizba 59abc1829a deployment: Add option to create AMI using master tag docker image 2021-10-18 21:06:58 +02:00
cruizba 76f4a5e0b0 Fix some tests not working with selenium 4
- For some reason, a chrome browser opened with docker-selenium 4 returns calling window.height 1 px more... No issue found anywhere on any repositories from chrome, selenium or chromedriver. It could be a regression in chromedrive, because chrome returns this value correctly. It does not affect to OpenVidu because value "window.height" and "window.width" are used to check if stream video dimensions are correctly updated.
- Reorganized tests of force codec.
2021-10-18 02:42:13 +02:00
Juan Navarro fc61692b09 openvidu-server / deployment: add VP9 to OPENVIDU_STREAMS_FORCED_VIDEO_CODEC
This was already a possibility but most comments didn't mention it
2021-10-15 16:53:44 +02:00
Juan Navarro 0678d86eeb openvidu-server: simplify logic for recording track selection
Two changes that try to make the code easier to read and maintain in the
future. The logic itself doesn't change.

- Do not repeat the MediaProfile assignments. This makes the flow much
easier to understand. And less error prone.

- Do not mix error handling with actual logic. By throwing early, the
actual selection logic that follows is more obvious.
2021-10-15 16:53:44 +02:00
pabloFuente 4e6e37fe39 openvidu-browser: improved RecordingEvent docs 2021-10-15 10:56:45 +02:00
cruizba 2daf8a2ede openvidu-node-client: Update openvidu-node-client to 2.20.2 2021-10-14 18:46:05 +02:00
cruizba 93626e5907 openvidu-server: LocalDockerManage#removeVolume added 2021-10-13 15:33:01 +02:00
pabloFuente 345ad44bdb openvidu-testapp: enableSimulcastExperimental in OpenViduAdvancedConfiguration 2021-10-11 14:42:39 +02:00
cruizba afe6eb1e8a Bump openvidu-call to 2.21.0-beta1 2021-10-08 01:14:04 +02:00
cruizba c32622dc28 Stop OpenVidu with error if COTURN_PORT is not valid 2021-10-07 22:20:56 +02:00
cruizba bced9ecfa2 If COTURN_PORT not defined or errored, set 3478 by default 2021-10-07 22:13:21 +02:00
cruizba 3dab60b7df Deployment: Bump openvidu ce/pro/enterprise to 2.21.0-beta1 2021-10-07 21:43:16 +02:00
Pablo Fuente Pérez 20fdbe0fe1
Merge pull request #656 from gtunon/master
Coturn port conf
2021-10-07 18:35:55 +02:00
pabloFuente 153d138efd Update README doc badge 2021-10-07 12:47:56 +02:00
gtunon a9a4be6c7c Double space to single space 2021-10-07 07:32:28 +02:00
gtunon 44d3158d1b error on coturn max port solved 2021-10-07 07:30:14 +02:00
gtunon cf2cc34525 coturnPort as a number 2021-10-07 07:28:34 +02:00
gtunon 45c04e0156 getNonUserProperties updated with COTURN_PORT 2021-10-07 07:26:21 +02:00
jenkinsopenvidu d143515470 Update openvidu-node-client to version v2.20.2 2021-10-06 14:02:30 +00:00
pabloFuente 60ec0b4020 openvidu-test-e2e: add OPENVIDU_EDITION to REST API Pro test 2021-10-06 15:52:53 +02:00
gtunon b7caa1c73e $$(detect-external-ip) 2021-10-06 15:44:51 +02:00
cruizba 9e535a15cf openvidu-node-client: Bump to axios 0.21.4 2021-10-06 14:45:45 +02:00
pabloFuente fa2e949b99 openvidu-server: LocalDockerManage#getMountsForContainers added 2021-10-06 14:15:31 +02:00
Carlos Ruiz Ballesteros 615a8370e3
Merge pull request #651 from OpenVidu/dependabot/npm_and_yarn/openvidu-node-client/axios-0.21.2
build(deps): bump axios from 0.21.1 to 0.21.2 in /openvidu-node-client
2021-10-05 19:00:28 +02:00
cruizba d530ce3f28 Update call to 2.21.0-dev1 2021-10-03 21:43:13 +02:00
cruizba 43f6636363 Update docker-compose files. Remove not needed chmod 2021-10-03 21:22:34 +02:00
gtunon 57faf14b21 Coturn port conf 2021-10-01 09:09:04 +02:00
cruizba 110878f4c9 deployment: Add volume to configure custom locations in nginx. This is useful to add reverse proxy or other services to the nginx configuration to default HTTPS_PORT configured 2021-09-30 16:33:08 +02:00
pabloFuente 197ddc8ce8 openvidu-server: LocalDockerManage#getRunningContainers filtering by status 2021-09-30 15:32:03 +02:00
pabloFuente 2e5f605225 /latest to /stable 2021-09-29 11:44:18 +02:00
jenkinsopenvidu 396081055f Update openvidu-node-client to version v2.20.1 2021-09-24 18:46:38 +00:00
cruizba 0079231967 Fix force codec H264 not working using openvidu-node-client 2021-09-24 19:58:56 +02:00
jenkinsopenvidu 5ee08a2d62 Update to version v2.20.0 2021-09-22 16:16:07 +00:00
pabloFuente 8539954b4e Updated docker-compose files to 2.20.0 2021-09-22 18:05:32 +02:00
pabloFuente fcdb35b97c Update openvidu-java-client to version v2.20.0 2021-09-22 16:01:23 +02:00
pabloFuente 7b84207e0e openvidu-testapp: update openvidu-node-client dependency to 2.20.0 2021-09-22 15:59:48 +02:00
jenkinsopenvidu 6242edfaf9 Update openvidu-node-client to version v2.20.0 2021-09-22 13:53:48 +00:00
pabloFuente 34a16cf98c Replace System.exit with Runtime.getRuntime.halt 2021-09-22 11:16:15 +02:00
cruizba 88fdea590d deployment: Fix wrong recording directory on install media nodes 2021-09-21 22:41:08 +02:00
cruizba 056538217c deployment: Not support deprecated API in enterprise ha master nodes 2021-09-21 21:31:58 +02:00
cruizba 1fd4e50506 deployment: use openvidu-server/deployments/enterprise/master-node as deployment directory. Change install_openvidu_enterprise_master_node_OPENVIDU_VERSION.sh as installation script name 2021-09-21 19:59:05 +02:00
cruizba 9bf5093ff3 deployment: Bump mediasoup-controller 2021-09-21 17:50:21 +02:00
cruizba 2b84d42bf3 deployment: Update openvidu server versions 2021-09-21 17:30:43 +02:00
cruizba 8f9512c3bd deployment - OpenVidu enterprise: Add media server in .env and OPENVIDU_EDITION 2021-09-21 16:25:55 +02:00
cruizba ff3d4db8db deployment: Ensure all openvidu deployments have permissions in recordings folder 2021-09-21 14:53:53 +02:00
pabloFuente 1f3f439e22 openvidu-server: asOptionalInetAddress less restrictive 2021-09-21 12:52:31 +02:00
cruizba c23f6910f0 Update mediasoup-controller version 2021-09-17 17:37:12 +02:00
cruizba 6242b7ed77 deployment: Better naming for instances in PRO 2021-09-15 16:17:11 +02:00
cruizba 08e3656c42 Bump openvidu-pro version 2021-09-15 12:44:16 +02:00
cruizba 3179dd6d58 Change infrastructure name of nodes. Add replication-manager logs 2021-09-14 10:14:47 +02:00
Carlos Ruiz Ballesteros b510f115dd
Merge pull request #649 from robert-scheck/env
openvidu-proxy: Pick up environment settings for TLS version, ciphers and HSTS
2021-09-14 09:57:52 +02:00
dependabot[bot] 0c69572ec8
build(deps): bump axios from 0.21.1 to 0.21.2 in /openvidu-node-client
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 12:42:47 +00:00
pabloFuente 67fad6a3ce openvidu-server: session already created message improved 2021-09-10 14:41:49 +02:00
pabloFuente 8eae2e0eab openvidu-browser: OpenVidu.life logic 2021-09-10 14:41:30 +02:00
pabloFuente 91d24ccd42 openvidu-server: improved concurrent Session initializaion 2021-09-10 13:10:52 +02:00
Juan Navarro 9dd62009fb openvidu-browser: remove inline outdated description of OpenViduAdvancedConfiguration
The resulting HTML docs are bad because they show an incomplete
description of the OpenViduAdvancedConfiguration type, which is then
duplicated (and more complete) in that type's description.
2021-09-09 17:40:01 +02:00
cruizba 3e7aa986b4 deployment: Fix missing templated variable for openvidu/openvidu-recording in testRecording.sh 2021-09-08 14:35:03 +02:00
cruizba bd1ad2f948 deployment: Add timeout to testRecording.sh to always remove the container in case of error. Add testRecording to CE 2021-09-08 14:30:04 +02:00
cruizba fb7ba4b701 deployment: Cache openvidu/openvidu-recording docker image in EC2 from AMI on start to fix first recording failed issue." 2021-09-08 13:02:18 +02:00
Juan Navarro 5b79f9a0a1 recording: improve Error event logs
Make the logs more descriptive and use the same structure for both of
them in CompositeWrapper and SingleStreamRecordingService.
2021-09-08 11:28:10 +02:00
Juan Navarro 1b01ffab81 recording: block on connect() before calling record()
The Kurento RecorderEndpoint.record() method expects that all elements
have been successfully connected. However if connect() is called non-
blocking, then it might happen that record() is called in parallel, when
the connections haven't been done yet.
2021-09-08 11:28:10 +02:00
pabloFuente 3b3fcaa1f0 openvidu-server: fix nullpointers when removing crashed Media Node 2021-09-02 17:53:05 +02:00
pabloFuente 132653cde7 openvidu-server: parallel stop of RecorderEndpoints 2021-09-02 17:09:25 +02:00
csantosm 8ce647c35b openvidu-browser: Handled promise rejection on getCommonStats 2021-09-01 11:36:20 +02:00
cruizba 04e8581149 deployment: multimaster - Missing parameters 2021-08-31 16:44:21 +02:00
cruizba 7ebf56f1aa deployment: multimaster - Create variables for autoscaling group names 2021-08-31 15:53:13 +02:00
Juan Navarro 3e42a6ef23 recording: block on connect() before calling record()
The Kurento RecorderEndpoint.record() method expects that all elements
have been successfully connected. However if connect() is called non-
blocking, then it might happen that record() is called in parallel, when
the connections haven't been done yet.
2021-08-30 18:53:01 +02:00
Robert Scheck 097030c846 openvidu-proxy: Pick up environment settings for TLS version, ciphers and HSTS
TLS version, ciphers and HSTS have been made configurable with #560, but these
settings are currently not getting picked up from environment variables...
2021-08-26 19:46:00 +02:00
cruizba 4f21203618 deployment: Let replication-manager access configuration and add new env variables 2021-08-24 12:29:47 +02:00
cruizba f2502a9e31 deployment: Remove RM_OPENVIDU_PRO_CONFIG_S3_BUCKET env variable 2021-08-22 19:54:48 +02:00
cruizba eccf116343 deployment: Remove unnecesary env variables 2021-08-22 18:51:32 +02:00
cruizba a9a514dbd1 deployment: Add AWS_DEFAULT_REGION in multimaster 2021-08-20 19:37:09 +02:00
cruizba 288e6492e1 deployment: S3 configuration persistance in openvidu multimaster 2021-08-18 17:07:13 +02:00
cruizba 69c65faa4c deployment: Bump replication manager version 2021-08-17 14:19:17 +02:00
pabloFuente 813d21938a openvidu-test-e2e: fix Rest API pro tests 2021-08-13 12:04:24 +02:00
pabloFuente 4d3602dc30 Fix e2e tests 2021-08-11 02:20:53 +02:00
pabloFuente b9fa01eccb openvidu-server: fix NullPointer when location is null in Participant 2021-08-10 21:34:27 +02:00
pabloFuente 23eed95937 openvidu-server: fix typo 2021-08-10 20:03:12 +02:00
pabloFuente 0b7c993551 Fix e2e tests with new Connection#ip property 2021-08-10 19:27:17 +02:00
pabloFuente 8559ca96d4 openvidu-server: change order of action upon KurentoClient disconnection (nodeCrashed) 2021-08-10 18:25:12 +02:00
pabloFuente 58c4d565f6 Server SDKs: Connection ip property 2021-08-10 18:04:44 +02:00
pabloFuente 2cba879541 openvidu-server: fix GeoLocationByIpDummy to support Connection ip 2021-08-10 17:56:26 +02:00
pabloFuente 7d17c05409 openvidu-server: add property ip to Connection entity 2021-08-10 17:54:00 +02:00
csantosm 3d46a2c473 openvidu-browser: Replaced error to warning log 2021-08-03 16:02:34 +02:00
cruizba c4d2c354e9 Bump media-node-controller version to 5.0.0 2021-07-26 18:26:17 +02:00
jenkinsopenvidu 5a5e99c50c Update to version v2.19.0 2021-07-26 12:01:34 +00:00
pabloFuente 935b488745 Update openvidu-java-client to version v2.19.0 2021-07-26 13:26:30 +02:00
pabloFuente f0d9373e17 Updated docker-compose files to 2.19.0 2021-07-26 13:23:32 +02:00
pabloFuente 0b965db1be openvidu-testapp: update openvidu-node-client to 2.19.0 2021-07-26 13:08:49 +02:00
jenkinsopenvidu c55060deeb Update openvidu-node-client to version v2.19.0 2021-07-26 11:06:24 +00:00
cruizba 0a577422f1 deployment: Bump openvidu-server-pro 2.19.0-beta12 2021-07-26 11:34:34 +02:00
pabloFuente 4c9e9ee6b3 Update .env file with OPENVIDU_EDITION property 2021-07-23 17:57:24 +02:00
cruizba ad1dca04cb openvidu server: Experimental parameter to enable GPU in recording containers. Add custom recording image configuration parameter. 2021-07-23 17:03:23 +02:00
cruizba a22ceb2d84 deployment: Bump media-node-controller:5.0.0-dev1 2021-07-20 23:26:46 +02:00
cruizba f7871d944b deployment: Bump openvidu-server-pro and openvidu-call beta versions 2021-07-19 12:11:52 +02:00
pabloFuente a3a5a6c929 Add OPENVIDU_ENTERPRISE_MEDIA_SERVER property to .env file 2021-07-14 13:46:04 +02:00
pabloFuente 5ab11ee63f Updated Kurento to 6.16.1 2021-07-14 13:33:38 +02:00
cruizba 5a32f41b51 deployment: Minor fix detect-external-ip.sh 2021-07-14 10:26:11 +02:00
cruizba d62b6e4e14 deployment: Remove env variable COTURN_INTERNAL_RELAY 2021-07-13 20:27:56 +02:00
cruizba ee00f45d6a deployment: Bump openvidu-server-pro version to 2.19.0-beta10 2021-07-13 19:48:38 +02:00
cruizba f4bde4b45a deployment: Bump OPENVIDU_UPGRASABLE_VERSION for installation scripts 2021-07-13 16:20:47 +02:00
cruizba 968f1b1391 Bump openvidu-recording version to 2.19.0 2021-07-13 14:33:59 +02:00
pabloFuente 6ac6adbeea openvidu-browser: support other browsers in iOS 2021-07-13 11:49:05 +02:00
cruizba 654a92de8c deployment: Bump openvidu-coturn docker version 2021-07-12 15:58:53 +02:00
cruizba d47a1c9ad7 Add additional parameter 'COTURN_INTERNAL_RELAY=<boolean>' to use Public or Internal IP. Defaults to 'false', which respect previous OpenVidu default deployment configuration 2021-07-12 15:55:31 +02:00
cruizba 8b1aaa710e deployment: Bump OpenVidu CE and PRO beta versions 2021-07-09 16:37:48 +02:00
cruizba ccbf9af14d deployment: Add mediasoup logs to metricbeat config file 2021-07-09 14:15:40 +02:00
pabloFuente fc5a53ce91 openvidu-server: no more sintactic sugar 2021-07-08 18:36:43 +02:00
pabloFuente 4b3b3780be openvidu-server: improve websocket disconnection detection when sending response 2021-07-08 18:04:18 +02:00
cruizba 3265bf401d openvidu-server: Reduce number of candidates when MEDIA_NODES_PUBLIC_IPS is defined 2021-07-08 17:49:52 +02:00
pabloFuente 9fd690559e openvidu-server: extend warn log when client websocket is closed 2021-07-08 15:33:15 +02:00
pabloFuente 432301e565 openvidu-server: warn instead of error when websocket has been closed by client 2021-07-08 15:31:01 +02:00
pabloFuente 0d739982a8 openvidu-browser: provide mediaServer as a WebRtcPeerConfiguration property 2021-07-08 12:39:08 +02:00
cruizba aa050b140d openvidu-server: Better implementation for MEDIA_NODES_PUBLIC_IPS 2021-07-07 18:08:49 +02:00
pabloFuente e1b6fb6179 openvidu-browser: fix subscription process when transcievers API not available 2021-07-07 12:54:23 +02:00
cruizba 87e9fb308c openvidu-server: Refactor method to check valid IPv4 and IPv6 parameters in OpenViduConfig.java 2021-07-06 21:31:18 +02:00
cruizba 879a88299d openvidu-server: Add parameter MEDIA_NODES_PUBLIC_IPS to modify public ip on remote media server candidates 2021-07-06 21:22:30 +02:00
Juan Navarro e66c5d1070 openvidu-browser: simulcast default 3 layers and 4:2:1 scaling
Leaves maxBitrate undefined so the browser chooses which are the best
values.
2021-07-02 15:06:00 +02:00
pabloFuente 08b0742163 openvidu-server: not active sessions generate sessionDestroyed event 2021-07-02 14:57:05 +02:00
cruizba b7ff9d66e1 deploymen: Bump openvidu-server versions 2021-07-02 12:13:14 +02:00
cruizba 23c67db989 deployment: Add missing mediasoup image on media node scripts 2021-07-02 12:02:26 +02:00
Juan Navarro cf613aedfc openvidu-browser: simulcast on Firefox 2021-06-30 19:24:23 +02:00
pabloFuente 6d93fc3405 Forcibly reconnect subscribers upon publisher reconnection if necessary 2021-06-30 16:00:13 +02:00
pabloFuente 00d64ded9b openvidu-browser: onForciblyReconnectSubscriber 2021-06-30 15:33:05 +02:00
pabloFuente ffcb56cc0d openvidu-browser: simulcast configuration 2021-06-28 11:37:00 +02:00
cruizba 3d978e1c46 openvidu-deployment: Comment possible values of OPENVIDU_BROWSER_LOGS 2021-06-28 11:13:01 +02:00
pabloFuente eeb6d1b903 openvidu-testapp: support mediasoup for testing with OpenVidu CE 2021-06-25 12:38:32 +02:00
pabloFuente 6d624209a0 openvidu-testapp: add reconnect button 2021-06-24 15:07:56 +02:00
cruizba 322ac2e843 openvidu-browser: Better naming for openvidu browser logs 'debug_app' option 2021-06-24 14:27:47 +02:00
cruizba ea56c09199 openvidu-browser: Remove unnecesary console.log in OpenViduLogger.ts 2021-06-23 22:03:57 +02:00
cruizba 42c833faf4 openvidu-browser: Add option 'debugApp' to send logs from app and from openvidu-browser 2021-06-23 21:37:26 +02:00
pabloFuente 1b22fd5c3a openvidu-browser: typed Session event handlers 2021-06-23 13:02:05 +02:00
pabloFuente 5b5696d0ac Add mediasoup image to Media Node installation files 2021-06-23 11:38:38 +02:00
Carlos Santos 66b1ce790d
openvidu-browser: Fixed bug when addTransceiver not available (#634)
After generateOffer() refactoring, the deprecated legacy method wasn't adding the meadstream tracks on peerConnection object as it used to do.
2021-06-22 13:31:25 +02:00
pabloFuente 3f0756984a openvidu-browser: log JSNLog messages in dev mode. Better initPublisher log 2021-06-22 12:58:00 +02:00
cruizba 7e739bc2d4 Fix comment context. Add end empty line 2021-06-21 15:07:32 +02:00
cruizba a54bcd773d Fix #631. Disable JSNLogger when openvidu-browser library is loaded 2021-06-21 14:52:01 +02:00
pabloFuente 1e4472f89d openvidu-browser: extend error logs to avoid empty objects 2021-06-21 12:54:29 +02:00
pabloFuente 35238a3390 openvidu-server: updated KurentoClient generic methods usage 2021-06-21 11:14:53 +02:00
csantosm deb01720f3 openvidu-browser: Added rtt and remb stats 2021-06-18 12:19:04 +02:00
pabloFuente 3569d49df6 openvidu.browser: log error when addTransceiver not available 2021-06-16 12:58:00 +02:00
Juan Navarro e0f79e815e
openvidu-browser: rewrite generateOffer() to correctly handle all send/recv cases (#577)
* openvidu-browser: rewrite generateOffer to use Transceivers

Uses Transceivers if these are available in the underlying WebRTC
implementation; otherwise it falls back to the legacy "offerToReceiveX"
config of pc.createOffer()

* openvidu-browser: move Transceiver creation in createOffer/createAnswer

* WebRtcPeer: avoid getter syntax that doesn't compile with old Angular in testapp

* WebRtcPeer: finish rewriting createOffer() & createAnswer() with Transceivers

createOffer() can be used either for sending a "send" or "recv" offer to
the media server; this is needed for the KMS SDP negotiation semantics.

createAnswer() is used when in MEDIASOUP SDP negotiation mode, where the
media server is the one sending an SDP Offer to the browser.
2021-06-11 17:33:35 +02:00
cruizba 04f4991a92 openvidu-recording: Most font languages support
- Removed fonts-droid-fallback because it was not enough to support some languages.
- Added some needed fonts to support all languages installing as little as possible
2021-06-10 19:59:54 +02:00
cruizba f2a84366d1 openvidu-recording: Replace fonts-noto with fonts-droid-fallback from Dockerfile to reduce docker image size 2021-06-10 18:18:06 +02:00
pabloFuente 05fa7e9a90 Add flag --disable-features=Translate to recording container 2021-06-10 17:33:29 +02:00
cruizba 1b5b876ba0 Install fonts-noto 2021-06-10 17:10:59 +02:00
Carlos Santos 131d883299
Merge pull request #630 from pedro-sa-89/remove-console.error-poluting-console-output
removed console.error() poluting console output on http failure
2021-06-10 11:39:29 +02:00
Pedro Sá 2148b37974 removed double reject() call from search&replace 2021-06-09 16:49:52 +01:00
Pedro Sá ae1c760af0 replace console.error with just reject 2021-06-09 16:46:39 +01:00
Pedro Sá 85b651cc02 remove console.error poluting console output 2021-06-09 16:22:55 +01:00
pabloFuente 2fcf136fa3 openvidu-browser: fix disposeWebRtcPeer exception when no WebRtcPeer is available 2021-06-09 15:14:25 +02:00
pabloFuente 8e07cfd3d5 openvidu-browser: update package.json dependencies 2021-06-08 10:52:23 +02:00
pabloFuente 9b1663f1c8 openvidu-server: change sessionCreated CDR event timing 2021-06-07 13:09:40 +02:00
cruizba 103f122c18 deployment: Bump openvidu-proxy container version 2021-06-07 11:02:38 +02:00
cruizba f1bb937c60 deployment: Add rule to allow iframe 2021-06-07 10:58:42 +02:00
pabloFuente 1b89d2751b openvidu-server: disable recording check on init if mediasoup 2021-06-03 13:42:46 +02:00
pabloFuente 7c4b1c94ef openvidu-server: forcedVideoCodec to NONE if mediasoup 2021-06-03 13:30:43 +02:00
pabloFuente 1f3bef9e01 openvidu-browser: fixed TypeDoc links 2021-06-03 11:23:17 +02:00
pabloFuente 1aff994c8e openvidu-server: fix /accept-certificate controller to return template 2021-06-02 22:33:02 +02:00
pabloFuente fd646bc2a2 openvidu-server: fix Recording construction with frameRate property 2021-06-02 12:42:16 +02:00
jenkinsopenvidu 516d3d76dc Update to version v2.18.0 2021-06-01 16:10:54 +00:00
pabloFuente 5767e24eb1 openvidu-testapp: update openvidu-node-client to 2.18.0 2021-06-01 17:54:34 +02:00
pabloFuente e8f2a3e7d9 docker-compose files updated to 2.18.0 2021-06-01 17:52:16 +02:00
openvidu 841f6c917d Update openvidu-java-client to version v2.18.0 2021-06-01 15:25:38 +00:00
jenkinsopenvidu 7aee20a0bf Update openvidu-node-client to version v2.18.0 2021-06-01 15:17:34 +00:00
cruizba 861f3510e4 Deployment: Define example values of force codec in .env 2021-06-01 17:10:59 +02:00
pabloFuente d2f020415e openvidu-browser: TypeDoc "nodeCrashed" events reason 2021-06-01 15:02:12 +02:00
cruizba 0b84cfdc58 deployment: Bump OpenVidu Server pro version beta22 2021-06-01 10:40:39 +02:00
pabloFuente 31002b2ffc openvidu-server: always apply heavy munging 2021-05-31 17:40:20 +02:00
pabloFuente da527b4816 openvidu-brower: NO_STREAM_PLAYING_EVENT only for Subscriber 2021-05-31 15:42:48 +02:00
pabloFuente 21615755f9 Support subscription with different client-server negotiation order 2021-05-31 15:20:54 +02:00
pabloFuente 845a088e69 Revert "openvidu-server: gatherCandidates after processAnswer on 2.18.0 SubscriberEndpoint"
This reverts commit e6808f987c.
2021-05-28 16:09:00 +02:00
cruizba 04dfaabb97 deployment: Quoted env vars in aws scripts... 2021-05-28 14:42:54 +02:00
pabloFuente 98d409c5c3 openvidu-server: fix PARTICIPANTJOINED_MEDIASERVER_PARAM 2021-05-28 14:20:29 +02:00
pabloFuente 8e5836a21b openvidu-server: mediaServer joinRoom response parameter 2021-05-28 12:40:46 +02:00
pabloFuente b4c6c2b4a7 openvidu-browser: fix log for getRemoteConnection 2021-05-28 10:39:19 +02:00
pabloFuente d320da622c openvidu-browser: typed OpenViduAdvancedConfiguration#publisherSpeakingEventsOptions 2021-05-27 21:53:01 +02:00
pabloFuente 7895ac0562 openvidu-browser: automatic reconnection capabilites on ICE failure states 2021-05-27 21:30:01 +02:00
pabloFuente ac0e93ea27 openvidu-browser: rename WebRtcPeer handler methods 2021-05-27 21:28:17 +02:00
pabloFuente 9fff788546 openvidu-test-e2e: OpenViduEventManager#stopVideoTracksOfVideoElement 2021-05-26 17:35:44 +02:00
pabloFuente f671c9cb65 openvidu-test-e2e: ExceptionEvent test 2021-05-26 17:33:20 +02:00
pabloFuente 3a03409617 openvidu-testapp: ExceptionEvent support 2021-05-26 17:31:47 +02:00
pabloFuente 36906e84e0 openvidu-client: ProtocolElements#ECHO_METHOD 2021-05-26 16:56:07 +02:00
pabloFuente 21020c1ca9 openvidu-server: "echo" rpc method 2021-05-26 14:47:16 +02:00
pabloFuente fccd21eefd openvidu-browser: OpenVidu#getWsReadyState 2021-05-26 13:03:10 +02:00
pabloFuente 05718efc2e openvidu-browser: fix ExceptionEvent NO_STREAM_PLAYING_EVENT (triggered by Session) 2021-05-26 13:01:35 +02:00
cruizba 2cdf58f523 deployment: Bump openvidu-server-pro version 2.18.0-beta19 2021-05-26 12:44:54 +02:00
pabloFuente 6a049918d6 openvidu-browser: ExceptionEvent.NO_STREAM_PLAYING_EVENT 2021-05-25 20:22:31 +02:00
pabloFuente 8d39c2006e openvidu-browser: websocket abort reconnection upon MasterNode crash 2021-05-24 14:56:17 +02:00
pabloFuente a135ea0aec openvidu-browser: support Master Node crash 2021-05-24 14:55:47 +02:00
pabloFuente f36da68598 openvidu-server: document EndReason 2021-05-20 18:03:01 +02:00
pabloFuente e2b6963a6b openvidu-server: close sessions before closing KurentoClients on PreDestroy 2021-05-20 17:59:30 +02:00
pabloFuente 0117e7ece4 openvidu-browser: WebRtcStats supported platform list updated 2021-05-19 10:46:43 +02:00
pabloFuente 52fee08e45 openvidu-browser: update broken RTCPeerConnection check 2021-05-19 10:46:00 +02:00
cruizba 75945bb8fe deployment: Bump OpenVidu Call versions beta8 2021-05-18 11:45:05 +02:00
pabloFuente 5de36ddb15 openvidu-browser: extend ExceptionEvent with ICE_CONNECTION_DISCONNECTED 2021-05-17 13:30:08 +02:00
cruizba e32385fc85 Bump openvidu versions 2021-05-13 13:20:38 +02:00
cruizba f0705c9cce ci: Improve docker build commands for better consistency 2021-05-12 12:24:18 +02:00
cruizba 429955e561 openvidu-browser: Configure JSNLog only when session id changes 2021-05-11 19:23:42 +02:00
pabloFuente d27e5c9658 openvidu-testapp: RecordingProperty ignoreFailedStreams 2021-05-11 19:15:58 +02:00
cruizba 43339f7df8 openvidu-browser: Don't add HTMLElements to openvidu-browser logs 2021-05-11 18:53:53 +02:00
pabloFuente eb3c28d0be openvidu-server: fix RecordingProperties build on setFinalRecordingNameAndGetFreeRecordingId 2021-05-11 17:04:47 +02:00
cruizba 3f1f685b83 deployment: Bump nginx to 6.0.0-dev1 2021-05-11 15:42:16 +02:00
cruizba 19b010a49c deployment: Add rules_access_dashboard to new rules 2021-05-11 14:51:12 +02:00
cruizba fc51f2f272 Update nginx to 1.20.0 2021-05-11 14:42:21 +02:00
cruizba 7a4435dd51 deployment: Minor fix to elasticsearch redirections 2021-05-11 14:42:04 +02:00
pabloFuente 390aca598b Fix tests after RecordingProperties#ignoreFailedStreams 2021-05-11 14:15:02 +02:00
pabloFuente c32548b8a2 openvidu-test-e2e: rollback DEFAULT_JSON_SESSION 2021-05-11 14:00:04 +02:00
pabloFuente 7e0e460078 openvidu-node-client: RecordingProperties#ignoreFailedStream 2021-05-11 13:00:08 +02:00
pabloFuente 888cc1bfc5 openvidu-server: parse ignoreFailedStreams recording property from REST params 2021-05-11 12:35:37 +02:00
pabloFuente f1da724533 New RecordingProperty ignoreFailedStreams 2021-05-11 12:28:41 +02:00
pabloFuente da003448ff openvidu-server: master node nodeCrashed event 2021-05-07 11:32:51 +02:00
cruizba cec967acc7 deployment: Minor fix to override redis configuration in coturn. Bump coturn to 4.0.0-dev2 2021-05-06 13:39:26 +02:00
Carlos Ruiz Ballesteros 56d9b66f83
Merge pull request #623 from OpenVidu/update-coturn-4.5.2
deployment: Update coturn to 4.5.2 and use official docker image
2021-05-06 13:02:40 +02:00
cruizba a8174b45a9 deployment: Update coturn to 4.5.2 and use official docker image 2021-05-06 13:01:00 +02:00
pabloFuente e5b4c725be openvidu-browser: Unified Plan support by default 2021-05-04 10:14:29 +02:00
pabloFuente 36c707bfb8 openvidu-server: fix insecure SSL certificate validation for webhook endpoints 2021-04-30 14:51:22 +02:00
cruizba 68eac029c1 Max length for log messages sent to not miss important information 2021-04-29 23:37:44 +02:00
cruizba b7da22180c Change to debug more possible long logs 2021-04-29 21:28:53 +02:00
cruizba 6fa2487ee0 Disable debug logs sending of openvidu-browser 2021-04-29 21:08:12 +02:00
cruizba b1be6e0bd5 Change log level from info to debug on possible big logs entries 2021-04-29 20:47:21 +02:00
cruizba 69fa73c9c0 openvidu-ce: change connectionId to finalUserId in TokenServices comments 2021-04-29 18:49:05 +02:00
cruizba a8917c17ac openvidu-pro: Index browser logs based on finalUserId 2021-04-29 18:45:26 +02:00
pabloFuente 7c494b0476 Send finalUserId to openvidu-browser on RPC joinRoom 2021-04-29 14:03:42 +02:00
cruizba e08057c6d2 Don't base64 some logs info headers 2021-04-29 13:26:54 +02:00
cruizba 1c7ac5c7fb deployment: Enable IPv6 in security groups 2021-04-28 19:00:25 +02:00
cruizba c5dca9c560 deployment: Bump openvidu server to 2.18.0-beta10 2021-04-28 12:52:39 +02:00
cruizba 9b9af1dae5 Revert UTF-8 format 2021-04-27 16:58:55 +02:00
cruizba 59e90106b6 openvidu-ce: Change Webhook strategy with requests retry handler 2021-04-27 15:33:06 +02:00
pabloFuente acec341364 openvidu-server: fix session close up order 2021-04-23 12:41:51 +02:00
Pablo Fuente Pérez 47970a1cd3
Update docker-compose.yml 2021-04-23 12:07:36 +02:00
pabloFuente 635579ad75 openvidu-server: ignore empty string on RecordingProperties "mediaNode" param 2021-04-23 10:38:23 +02:00
cruizba 4891dca38c deployment: Bump to version 2.18.0-beta9 2021-04-22 21:38:04 +02:00
cruizba fc7c127a4e openvidu-ce: Check if mediaNode property is empty 2021-04-22 21:33:05 +02:00
pabloFuente f6422c7a40 openvidu-server: skip Kurento remote operations if node crashed 2021-04-22 18:06:30 +02:00
pabloFuente 63b312227f openvidu-server: delay websocket closeup by the server-side 2021-04-22 17:38:20 +02:00
pabloFuente e6808f987c openvidu-server: gatherCandidates after processAnswer on 2.18.0 SubscriberEndpoint 2021-04-22 16:39:51 +02:00
pabloFuente 09342806f2 openvidu-browser: remove extra debug logging when sending RPC request 2021-04-22 10:44:49 +02:00
pabloFuente 4cd1feea18 openvidu-server: also clean session collections if session already closed 2021-04-21 16:14:16 +02:00
pabloFuente 6c90d6426b openvidu-server: grant session collections are clean before sessionDestroyed 2021-04-21 16:14:16 +02:00
Juan Navarro 8e3f1e1eaf Fix ShellCheck errors and warnings on shell scripts
* ALWAYS quote variable expansions (except in for loops)
* Use "-n" instead of "! -z"
* Fix bad redirection (|) when an OR (||) was intended
* Don't expand variables in printf format string (pass as argument)
* ALWAYS quote variable expansions (except in for loops)
* Avoid useless cat:
  cat file | grep pattern ==> grep pattern file
* Did I mention to ALWAYS quote variable expansions?

Always use ShellCheck to write shell scripts!
https://marketplace.visualstudio.com/items?itemName=timonwong.shellcheck
2021-04-20 17:06:22 +02:00
Juan Navarro 050057253a Fix spelling of several words in user-facing text & logs
stoped -> stopped
stoping -> stopping
uppgrade -> upgrade
dowloading -> downloading
ouput -> output
lastest -> latest
Openvidu -> OpenVidu
2021-04-20 17:06:22 +02:00
pabloFuente 83a341767e openvidu-server: mediaServerReconnect reason 2021-04-20 16:41:05 +02:00
pabloFuente 114e91322c Add nodeCrashed event to .env files 2021-04-20 16:18:46 +02:00
pabloFuente 2ee87c05ff openvidu-server: remove debugging log 2021-04-20 14:36:28 +02:00
pabloFuente 92717803ba openvidu-server: log webhook for debugging 2021-04-20 13:10:21 +02:00
cruizba 5b1a5fe4e9 deployment: Bump OpenVidu Pro version 2.18.0-beta8 2021-04-20 11:15:09 +02:00
pabloFuente 3e9f8b5669 openvidu-server: nodeCrashed event with lists of session and recording ids 2021-04-20 10:23:17 +02:00
cruizba f89f1abffd deployment: rename STACK_ARN to RM_CLOUDFORMATION_ARN 2021-04-19 18:34:17 +02:00
pabloFuente c1354b5bb8 openvidu-server: add affected sessions and recordings to nodeCrashed event 2021-04-19 18:23:59 +02:00
cruizba fb1a5c1d51 deployment: Multimaster, add stack arn 2021-04-19 18:18:21 +02:00
Pablo Fuente Pérez bc555f8ba6
Update docker-compose.yml 2021-04-19 16:43:43 +02:00
pabloFuente fa9268b124 openvidu-server: close sessions upon nodeCrash refactoring 2021-04-19 15:29:57 +02:00
pabloFuente 880d5ced54 openvidu-server: clean SessionEventsHandler of empty handlers 2021-04-19 14:31:36 +02:00
Pablo Fuente Pérez bcf66b9e9e
Update docker-compose.yml 2021-04-19 10:53:29 +02:00
cruizba aff437bd13 Bump to version 2.18.0-beta6 2021-04-15 21:24:27 +02:00
cruizba 36f0b1ff07 Bump openvidu pro version to 2.18.0-beta5 2021-04-15 15:11:38 +02:00
pabloFuente 3440d20977 openvidu-server: encode with UTF-8 webhook HttpEntities 2021-04-15 13:43:50 +02:00
pabloFuente 570056426c openvidu-java-client: more UTF-8 HttpEntity fixes 2021-04-15 13:43:02 +02:00
pabloFuente b0d19484a7 openvidu-java-client: HttpEntity params encoded with UTF-8 2021-04-15 13:24:28 +02:00
pabloFuente 3d2c04c7de openvidu-java-client: encode HttpEntity with UTF-8 2021-04-15 13:20:43 +02:00
pabloFuente 73835701a6 openvidu-testapp: fix Session API dialog when no mediaNode 2021-04-14 19:52:20 +02:00
pabloFuente 3cc11fbffb openvidu-test-app: fix RecordingPropertiesComponent 2021-04-14 15:23:32 +02:00
pabloFuente e939245603 openvidu-node-client: sanitize default SessionProperties 2021-04-14 15:21:27 +02:00
pabloFuente 69d7912e58 openvidu-server: log ICE candidates 2021-04-13 17:58:16 +02:00
cruizba 665f3db149 deployment: Update aws-asg master files 2021-04-13 15:59:05 +02:00
cruizba c7de78b9f3 deployment: Bump media-node-controller to version 4.0.0-dev1 2021-04-13 15:37:28 +02:00
pabloFuente c2c3c1d193 openvidu-test-e2e: test new RecordingProperties 2021-04-13 14:02:51 +02:00
pabloFuente 6eca1f1e71 openvidu-java-client: fix Recording initialization from JSON 2021-04-13 13:52:50 +02:00
pabloFuente 1b23996479 openvidu-test-e2e: updated to new openvidu-testapp 2021-04-13 13:22:16 +02:00
pabloFuente 2cafb64f4b openvidu-testapp: RecordingProperties refactoring 2021-04-13 13:04:49 +02:00
pabloFuente 2faeb965ca openvidu-server: RecordingProperties.mediaNode defined in ALWAYS recordings 2021-04-12 15:44:10 +02:00
pabloFuente 08f878b8a9 openvidu-node-client: fix defaultRecordingProperties initialization 2021-04-12 13:44:12 +02:00
cruizba a1b5ddc398 deployment: Add OPENVIDU_BROWSER_LOGS parameter to .env 2021-04-09 19:55:28 +02:00
pabloFuente 95a2c4c58d openvidu-server: fix empty RecordingProperty "name" 2021-04-09 18:28:10 +02:00
pabloFuente e325f9956d openvidu-test-e2e: fix openviduJavaClientTest 2021-04-09 17:37:24 +02:00
pabloFuente c138e3eb21 openvidu-node-client: dependencies udpated 2021-04-09 17:32:57 +02:00
pabloFuente e38c7e4a6c openvidu-java-client/openvidu-node-client: new RecordingProperties defaults 2021-04-09 17:32:33 +02:00
pabloFuente 1d026e4a7d openvidu-server: improved collection of RecordingProperties REST API params 2021-04-09 17:24:01 +02:00
cruizba e3f66a75ec openvidu-browser: Send logs for with sessionId and first connectionId. Avoid polling after unauthorized logs requests. 2021-04-08 16:17:35 +02:00
pabloFuente 74ad11dd5c openvidu-server: improved warn message when geolocation failure 2021-04-08 15:29:53 +02:00
cruizba f4f70bbf82 openvidu-server/dashboard: Revert angular cli 2021-04-07 17:32:50 +02:00
cruizba 9e57a9db7a Fixes token check 2021-04-07 17:30:44 +02:00
cruizba 5287ed631f openvidu-browser: Parametrized send openvidu browser logs, disabled by default 2021-04-07 17:29:51 +02:00
cruizba 29a8b864cb Merge branch 'master' of https://github.com/OpenVidu/openvidu 2021-04-07 17:27:25 +02:00
pabloFuente 69334e3f98 openvidu-server: use sessionId prefix when listing local recording files 2021-04-07 11:31:58 +02:00
cruizba c5ceade2a5 openvidu-server: Improve tokenRegister check 2021-04-07 09:40:00 +02:00
pabloFuente 51a7c56fb5 openvidu-test-e2e: update DEFAULT_JSON_SESSION 2021-04-06 19:26:56 +02:00
pabloFuente 5af01fec24 openvidu-test-e2e: fix RecordingProperties tests 2021-04-06 18:57:07 +02:00
pabloFuente e15fcebb02 openvidu-test-e2e: check frameRate on RecordingUtils 2021-04-06 18:03:19 +02:00
pabloFuente 12b8087042 openvidu-testapp: fix defaultOutputMode 2021-04-05 21:56:38 +02:00
pabloFuente 8f9ad60d2b openvidu-test-e2e: fix openviduJavaClientTest 2021-04-05 20:58:42 +02:00
pabloFuente 8cbaedb403 openvidu-test-e2e: updated to new RecordingProperties 2021-04-05 20:57:23 +02:00
pabloFuente 6cf14dfce2 openvidu-test-app: new RecordingProperties and PublisherSpeakingEvents 2021-04-05 20:54:02 +02:00
pabloFuente 859ecfbcdd openvidu-server: add frameRate in final places 2021-04-05 20:51:49 +02:00
pabloFuente 4cc1bacc20 openvidu-java-client and openvidu-node-client: manage frameRate in recording metadata 2021-04-05 20:50:29 +02:00
pabloFuente cdb518ea97 openvidu-recording container resolution default to HD 2021-04-05 20:10:22 +02:00
pabloFuente 6786b67c10 openvidu-server: RecordingProperties refactoring 2021-04-05 20:06:05 +02:00
pabloFuente b774d2cefc openvidu-java-client/openvidu-node-client RecordingProperties refactoring 2021-04-05 17:06:12 +02:00
cruizba 89e73262aa openvidu-browser: Increased maxBatchLog to retaing logs after failed requests 2021-04-01 03:11:45 +02:00
cruizba cd8f89614a openvidu-browser: Add jsnlog as dependency 2021-03-31 17:22:19 +02:00
cruizba 5841d15a86 openvidu-pro: Adapt openvidu-browser and openvidu-server ce to send browser logs related with openvidu-browser in OpenVidu Pro 2021-03-31 17:12:37 +02:00
pabloFuente da3fb64073 openvidu-browser: fix Session.unpublish (check Connection.stream before deletion) 2021-03-31 12:49:21 +02:00
pabloFuente 87117f31e4 openvidu-browser: hark refactoring. Allow PublisherSpeakingEvent for local streams 2021-03-30 18:04:56 +02:00
pabloFuente 0a3553c704 openvidu-browser: OpenVidu.webrtcStatsInterval by default to -1 2021-03-29 15:44:04 +02:00
pabloFuente 59c3a84718 openvidu-browser: promisified Session.unpublish and Session.unsubscribe 2021-03-29 14:53:12 +02:00
pabloFuente 464ef90c79 openvidu-browser: single iceServer on RTCPeerConnection 2021-03-26 22:02:53 +01:00
cruizba a3d226a4cb Bump openvidu-pro to 2.18.0-beta2 2021-03-26 14:50:20 +01:00
pabloFuente 087ef665c2 openvidu-browser: small refactoring of Publisher.replaceTrack method 2021-03-25 16:29:38 +01:00
pabloFuente f92869cff5 openvidu-browser: better Publisher.replaceTrack docs 2021-03-25 14:21:59 +01:00
pabloFuente eae032405d openvidu-browser: Publisher.replaceTrack method refactoring 2021-03-25 13:58:56 +01:00
pabloFuente eb914b5418 openvidu-test-e2e: fix streamPropertyChangedEvent test 2021-03-25 12:18:57 +01:00
pabloFuente e5a19c78a6 openvidu-browser: support stats in Safari 2021-03-24 22:54:04 +01:00
pabloFuente ef013ca5e0 openvidu-browser: full video dimensions refactoring 2021-03-24 19:39:49 +01:00
pabloFuente 928514d57c openvidu-testapp: improved JSON stringify without circular dependencies 2021-03-24 12:32:26 +01:00
pabloFuente bd83a1993b openvidu-test-e2e: extended streamPropertyChangedEventTest 2021-03-24 12:20:40 +01:00
pabloFuente faf7f6820b openvidu-browser: fix local StreamPropertyChangedEvent filter (options as object instead of string) 2021-03-24 12:15:19 +01:00
pabloFuente e59e9033f8 openvidu-browser: add Samsung Internet Browser as a Chroumium browser 2021-03-23 19:35:55 +01:00
pabloFuente 1dc8b38c0c openvidu-browser: add EdgeMobile to NetworkQualityAPI 2021-03-23 19:01:09 +01:00
pabloFuente be983f2a71 openvidu-browser: keep audioActive and videoActive after subscription reconnection 2021-03-23 15:34:33 +01:00
pabloFuente cd99eba442 openvidu-browser: uuidv4 2021-03-23 10:51:14 +01:00
pabloFuente bd3d831355 openvidu-browser: typed Session.[on,once,off] for ExceptionEvent 2021-03-23 10:33:52 +01:00
pabloFuente ff8b51dbf1 openvidu-browser: ExceptionEvent 2021-03-22 19:23:03 +01:00
pabloFuente 4219c6dbc7 openvidu-browser: Stream is not a public EventDispatcher 2021-03-22 13:27:58 +01:00
pabloFuente 2cef860128 openvidu-browser: throw OPENVIDU_NOT_CONNECTED when Session.connect not called 2021-03-22 13:02:41 +01:00
pabloFuente 317b388088 openvidu-browser: beautify .js files 2021-03-22 12:14:38 +01:00
pabloFuente ae686ffbb6 openvidu-browser: change all "on" methods to "addEventListener" 2021-03-22 11:46:52 +01:00
pabloFuente e878b4bbf2 openvidu-browser: improved getSelectedIceCandidate method 2021-03-20 14:07:38 +01:00
pabloFuente d4e30455f1 openvidu-browser: getSelectedIceCandidadte and getCommonStats 2021-03-20 14:04:09 +01:00
pabloFuente 6b9f2be9d6 openvidu-browser: WebRTC stats refactoring 2021-03-18 13:39:50 +01:00
pabloFuente 076fb233e2 openvidu-server: use OfferOptions when generating SDP offer 2021-03-16 11:17:24 +01:00
pabloFuente 084cfc49f7 mediasoup refactoring 2021-03-16 10:26:39 +01:00
pabloFuente 2e40d14432 openvidu-server: blocking and non-blocking versions of endpoint connection 2021-03-12 11:25:13 +01:00
pabloFuente 17ea55ad07 openvidu-server: refactor unnecessary isOffer param 2021-03-12 10:16:17 +01:00
pabloFuente 6d5bca0762 openvidu-server: remove unused property of SubscriberEndpoint 2021-03-11 17:24:01 +01:00
pabloFuente 5b3dca2907 openvidu-server: fix old recordings compatibility with 2.17.0 release 2021-03-11 12:47:15 +01:00
cruizba 7184bd4e9a deployment: Minor fixes OpenVidu Pro installation script 2021-03-10 22:16:33 +01:00
cruizba 026e231507 Update previous AWS variables in new .env-version on upgrades 2021-03-10 21:19:06 +01:00
pabloFuente 3afbe8a80e openvidu-browser: rollback Typedoc update 2021-03-09 18:49:18 +01:00
pabloFuente 471cbeb208 openvidu-browser: update dependencies and fix Promise return types 2021-03-09 15:07:45 +01:00
pabloFuente c4ddcc952d Updated "Support badge" of README 2021-03-09 12:33:49 +01:00
pabloFuente 5b6b8aa9f4 openvidu-server dashboard dependencies updated 2021-03-09 10:35:32 +01:00
cruizba df2d90ba3b deployment CE: Don't fail stack if ping does not responds 2021-03-08 12:36:16 +01:00
csantosm a47e5ab704 openvidu-browser: Updated webrtc stats 2021-03-05 12:26:03 +01:00
jenkinsopenvidu 23b101ad8c Update to version v2.17.0 2021-03-04 15:59:52 +00:00
pabloFuente 2d9247fc15 docker-compose.yml files updated to 2.17.0 2021-03-04 16:47:39 +01:00
openvidu 5c10b41547 Update openvidu-java-client to version v2.17.0 2021-03-04 14:46:40 +00:00
pabloFuente 2162636512 openvidu-java-client: fix mvn-gpg-plugin with config 2021-03-04 15:43:08 +01:00
pabloFuente 6ff7f7fd89 openvidu-java-client: update javadoc plugin 2021-03-04 15:07:21 +01:00
pabloFuente 5f733acfe4 openvidu-testapp: update openvidu-node-client version to 2.17.0 2021-03-04 13:53:20 +01:00
jenkinsopenvidu c767e330a3 Update openvidu-node-client to version v2.17.0 2021-03-04 12:49:16 +00:00
pabloFuente 482ecf8b7f KMS 6.16.0 2021-03-04 11:55:20 +01:00
pabloFuente b4efa38e36 Updated openvidu-recording image to 2.17.0 2021-03-04 11:48:03 +01:00
Carlos Santos eca5021f66
Update README.md 2021-03-03 16:37:37 +01:00
pabloFuente c36ad3e282 openvidu-server: add media_node_id property on Recording objects 2021-03-03 14:31:31 +01:00
pabloFuente a7918ba174 openvidu-server: do NOT return uniqueSessionId when getting Recordings 2021-03-02 11:15:57 +01:00
pabloFuente b9e54e032a openvidu-server: fix Recording object constructor with new prop uniqueSessionId 2021-03-01 22:13:02 +01:00
cruizba 7f71f7734a deployment: Add fields to identify filebeat data 2021-03-01 19:39:49 +01:00
pabloFuente 3c06fcb305 openvidu-test-e2e: fixed tests after uniqueSessionId property addition 2021-03-01 18:30:58 +01:00
pabloFuente 4f1f50a2d5 openvidu-server: uniqueSessionId 2021-03-01 17:35:30 +01:00
cruizba c1984b5071 deployment: Export elasticsearch at /openvidu/elasticsearch 2021-03-01 16:03:39 +01:00
csantosm cc02fa4f7a openvidu-browser: Fixed sendVideoData bug when peerConnection is closed 2021-02-25 15:16:18 +01:00
pabloFuente 811409d250 openvidu-server: OpenviduConfig#getValue from private to protected 2021-02-25 14:43:01 +01:00
cruizba b6c1e40e28 deployment: Fix error after on changing ELASTICSEARCH_PASSWORD 2021-02-24 21:13:37 +01:00
csantosm 9db132b8b7 openvidu-browser: Parsed stats to number type 2021-02-24 13:03:04 +01:00
csantosm e545fd1630 openvidu-browser: Refactored webRtcStats 2021-02-24 12:01:15 +01:00
cruizba a5e022e440 openvidu-server: Bump openvidu recording to 2.17.0-beta2 2021-02-22 14:52:21 +01:00
cruizba a9ee101337 deployment: Media node controller output with no color 2021-02-22 14:22:40 +01:00
cruizba 7bd0774790 deployment: Bump openvidu-recorindg version and update filebeat for recordings and media-node-controller 2021-02-22 12:10:32 +01:00
cruizba b618dc45e9 Bump recording version to 2.17.0-dev2 2021-02-19 18:19:44 +01:00
cruizba 2d74acb39d openvidu: Safer way to run xvfb in openvidu-recording to fix concurrent recordings issue 2021-02-19 18:13:17 +01:00
cruizba 4d66a5b2a5 deployment: Set OPENVIDU_PRO_AWS_REGION in CF to avoid autodiscovery region problems 2021-02-19 13:46:39 +01:00
cruizba ed69f431f8 deployment: Bump openvidu ce version 2.17.0-dev3 2021-02-19 13:45:55 +01:00
pabloFuente 93fcbe5012 openvidu-server: more time for init INDIVIDUAL recording 2021-02-19 09:55:57 +01:00
cruizba 16af04e380 Update openvidu recording version to 2.17.0-beta1 2021-02-18 18:11:39 +01:00
pabloFuente af57ce747f openvidu-server: webrtcDebug event 2021-02-18 16:02:03 +01:00
pabloFuente f672090757 openvidu-browser: fix Map refactoring bugs (for..in not working on Map) 2021-02-18 16:00:07 +01:00
pabloFuente d91721c11d openvidu-server: WebRtcDebug event 2021-02-18 12:56:31 +01:00
pabloFuente 396b620e04 openvidu-server: Kms#getNumberOfRecordings 2021-02-18 09:43:25 +01:00
pabloFuente a35b8399a4 openvidu-server: add warn log on SessionRestController#generateErrorResponse 2021-02-17 19:22:21 +01:00
csantosm ff84eb128b openvidu-browser: Added method necessary for openvidu-test-app 2021-02-16 18:16:47 +01:00
csantosm f286ce8131 openvidu-browser: Refactored WebRtcStats
- Updated WebRtcStats file allowing send extra information with webrtc stats such as userId, sessionId, platform description ...
2021-02-16 17:18:03 +01:00
pabloFuente d39fde73d7 openvidu-test-browsers: update BrowserUser#waitWithNewTime method 2021-02-16 14:36:12 +01:00
pabloFuente cf062c8950 openvidu-server: nodeCrashed event 2021-02-16 11:23:39 +01:00
pabloFuente 2569e935ff openvidu-server: new log line upon participant connected (ip, platform) 2021-02-15 18:00:17 +01:00
pabloFuente 32487e4ec6 openvidu-server: fix possible JsonNullException 2021-02-15 11:27:13 +01:00
cruizba 57233393eb openvidu: change identifierPrefixe KMS_ID to MEDIA_ID 2021-02-13 02:08:39 +01:00
cruizba a9e6e919a1 deployment: Don't wait media-node-controller in openvidu_launch_kms.sh openvidu-pro script 2021-02-13 02:06:58 +01:00
pabloFuente 62f50b8796 openvidu-server: better OpenviduConfig post construct method name 2021-02-11 14:05:59 +01:00
pabloFuente 45dc06fb59 openvidu-server: store Media Node num of sessions, connections and composed recordings 2021-02-10 21:32:34 +01:00
pabloFuente 1c63047a69 openvidu-test-e2e: update REST API Pro test 2021-02-10 15:09:38 +01:00
cruizba e1c01bd9c2 Remove 10 factor of media nodes metricbeat 2021-02-10 14:12:30 +01:00
cruizba 23e83aaa80 deployment: Drop openvidu logs from filebeat (sent via logback by openvidu) and change OPENVIDU_PRO_CLUSTER_LOAD_INTERVAL by OPENVIDU_PRO_STATS_MONITORING_INTERVAL in media nodes metricbeat 2021-02-10 14:09:59 +01:00
cruizba de8c9b7625 deployment: Add node_id to master beats 2021-02-10 11:47:44 +01:00
cruizba 33edab15f7 deployment: Add node_id in metricbeat to identify cluster nodes 2021-02-09 21:10:13 +01:00
cruizba 3b3b2c3d5f Bump media-node-controller dev version to 3.0.0-de5 2021-02-09 11:57:16 +01:00
cruizba cb97b02c2e deployment: Metricbeat Use node_role instead of cluster_role 2021-02-08 18:05:29 +01:00
cruizba 2ab6eb7d9b Send metrics with cluster id undefined if OPENVIDU_PRO_CLUSTER_ID and DOMAIN_OR_PUBLIC_IP are not defined 2021-02-08 16:44:46 +01:00
cruizba 9355248439 Revert OPENVIDU_PRO_STATS_MONITORING_INTERVAL parameter 2021-02-08 14:12:07 +01:00
cruizba 71414aa08c Remove unnecessary fields 2021-02-08 13:28:16 +01:00
cruizba f871d7850d deployment: Updated openvidu pro beats custom fields. Don't add docker metrics 2021-02-08 13:23:02 +01:00
pabloFuente fe03ee96ce openvidu-server: KMS methods to get the number of sessions and webrtc connections 2021-02-05 14:07:46 +01:00
cruizba ff35adf607 deployment: Typo nginx 2021-02-05 11:33:39 +01:00
cruizba c20e576f8e openvidu-pro: Update e2e test to remove OPENVIDU_PRO__STATS_MONITORING_INTERVAL 2021-02-05 00:31:14 +01:00
cruizba 41273d700d deployment: Typo metricbeat openvidu server pro 2021-02-04 22:27:48 +01:00
cruizba e321370014 deployment: Add field 'cluster-role' to distinguish metrics in dashboards 2021-02-04 21:51:24 +01:00
cruizba d8beb2147d openvidu-deployment: Parametrize and increased default 'client_max_body_size' to 200M in openvidu-ce and openvidu-pro nginx 2021-02-04 20:57:01 +01:00
cruizba 8f1c313eca openvidu-pro: Typo metricbeat media-node 2021-02-04 17:49:23 +01:00
cruizba d100cd8e95 openvidu-pro: Add to metricbeat the ability to monitor docker containers 2021-02-04 15:19:50 +01:00
pabloFuente 5874870f38 Recording container scripts updated with flag --simulated-outdated-no-au 2021-02-04 13:40:29 +01:00
csantosm c34c198b84 openvidu-browser: Fixed video filter call 2021-02-04 11:14:41 +01:00
cruizba ff497a1ad1 openvidu-pro: Update metricbeat to properly manage system metrics 2021-02-03 19:57:20 +01:00
cruizba 45eb8fb610 openvidu-pro: minor fix metricbeat ilm and add metrics for elasticsearch 2021-02-03 19:25:09 +01:00
csantosm ce6beac85d openvidu-browser: Checked remoteConections size before find into it
When two connections close at the same time, it shows the following error : 
OpenVidu Error Remote connection unknown when 'onParticipantLeft'. Existing remote connections: []

it has been avoided checking if remoteConnections is not empty
2021-02-03 17:41:25 +01:00
csantosm c0f1e1d6fb openvidu-browser: Used typescript Map insted of custom map 2021-02-03 17:32:23 +01:00
pabloFuente 60bd68870e openvidu-test-e2e: update Pro TestApp test with new mediaNodeId Session property 2021-02-02 19:44:49 +01:00
pabloFuente 7691bccdfb openvidu-server: prepare mediaNodeId property in Session entity 2021-02-02 18:44:20 +01:00
pabloFuente 5d21baff89 openvidu-test-e2e: another fix to webhook test 2021-02-02 17:10:20 +01:00
pabloFuente 51e2469701 openvidu-server: "connection" to "connectionId" 2021-02-02 16:37:45 +01:00
pabloFuente 6800e761a2 openvidu-test-e2e: fix webhook test 2021-02-02 16:28:45 +01:00
cruizba d6e02fc55c Update openvidu recording version 2021-02-02 16:21:09 +01:00
cruizba 4204aef74e openvidu-pro: Add custom env variables for custom instance type and volume size to be added in rest endpoint to add media nodes 2021-02-02 13:58:26 +01:00
pabloFuente 1102308c17 openvidu-server: rollback comment commit 2021-02-02 11:35:56 +01:00
pabloFuente b60466f8ee openvidu-server: "participantId" to "connectionId" 2021-02-02 11:32:24 +01:00
pabloFuente 8de0f838fd openvidu-server: "participantId" to "connectionId" 2021-02-02 11:30:36 +01:00
pabloFuente 8f822cde33 openvidu-server: remove logging of tokens 2021-02-02 11:14:59 +01:00
pabloFuente 0225c09b64 Restart policy of replication-manager set to always 2021-01-27 14:40:15 +01:00
pabloFuente f2582aa7ce openvidu-server: fix KurentoClient reconnection timer behavior (one per Kms) 2021-01-26 17:22:34 +01:00
pabloFuente 0f781f44fd openvidu-node-client: send ConnectionProperties values on Session#createConnection 2021-01-25 10:51:19 +01:00
pabloFuente 9b5fffe30e Update PRO docker-compose media-node-controller tag 2021-01-20 19:39:42 +01:00
pabloFuente 314dd8a110 Delete metricbeat-openvidu.yml of media-node deployment 2021-01-19 15:31:32 +01:00
pabloFuente 7231b3efe0 openvidu-server: minor refactoring at @PreDestroy of KmsManager 2021-01-18 12:43:23 +01:00
pabloFuente 3a3c474b84 Recording Docker image updated 2021-01-14 15:38:46 +01:00
pabloFuente 3535c715a2 Deleted metricbeat-openvidu.yml 2021-01-14 15:25:44 +01:00
cruizba ec4fcf1ccf openvidu-deployment: Update openvidu/openvidu-server-pro to 2.17.0-dev5 2021-01-11 16:41:32 +01:00
cruizba 876fe30230 openvidu-deployment: getUbuntuAmiId updated to get non aws-marketplace images 2021-01-11 16:04:25 +01:00
Carlos Ruiz Ballesteros dd8dc43653
Merge pull request #591 from slabajo/patch-1
Update metricbeat-elasticsearch.yml
2021-01-11 13:40:08 +01:00
pabloFuente ae9fa00419 openvidu-server-pro version of docker-compose multimaster updated 2021-01-11 12:02:26 +01:00
csantosm 8037fc99b1 openvidu-browser: Added custom logger to jsonrpcclient 2021-01-08 12:43:31 +01:00
Saúl Pablo Labajo Izquierdo 69bd2d0722
Update metricbeat-elasticsearch.yml
Changes needed to get metrics from the media node host base system (cpu, memory, disk, network, uptime))
Also changed polling period to 10x so not to oversize elasticsearch storage
2021-01-08 10:58:38 +01:00
pabloFuente c40847d798 Updated replication-manager version in docker-compose 2021-01-05 19:33:53 +01:00
pabloFuente 80892d8b3f Updated replication-manager version in docker-compose 2021-01-05 18:14:57 +01:00
csantosm a2d22032c9 openvidu-node-client: Updated axios dependecy 2021-01-05 15:13:48 +01:00
pabloFuente e1237e9a52 Update asg docker-compose.yml property 2020-12-31 03:02:13 +01:00
Micael Gallego c1b3ad6090
Merge pull request #581 from Flamenco/patch-1
Thank you for PR
2020-12-29 16:40:03 +01:00
pabloFuente 4ab40b8a33 Update docker-compose AWS ASG 2020-12-29 16:36:06 +01:00
Flamenco 018145c90a
Fix typo in output message 2020-12-29 10:19:40 -05:00
pabloFuente 3a4c5a5822 Updated docker-compose for RM 2020-12-29 11:27:29 +01:00
oscarsotosanchez 7e9b16d1ca Update variables OV-ASG 2020-12-24 12:18:06 +01:00
oscarsotosanchez 5697038f8b Update installation script 2020-12-23 17:05:32 +01:00
oscarsotosanchez 6aea64e3f0 add openvidu aws-asg 2020-12-23 16:56:17 +01:00
pabloFuente b55072b394 openvidu-server: environmentId on mediaServerCrashed 2020-12-23 12:27:20 +01:00
pabloFuente c98276a196 openvidu-test-e2e: disable Kurento reconnect test 2020-12-22 19:24:31 +01:00
pabloFuente 1b98351596 openvidu-server: new behavior upon KurentoClient disconnection 2020-12-22 17:36:40 +01:00
pabloFuente 474e0a70b1 openvidu-server: CDRLoggerWebhook constructor refactoring 2020-12-21 15:34:18 +01:00
pabloFuente b3670cf893 openvidu-browser: add sessionId as query param to WS URL connection 2020-12-21 15:33:18 +01:00
pabloFuente bd3b0f5b66 openvidu-server: new OPENVIDU_PRO_AWS_S3_HEADERS property 2020-12-16 11:23:35 +01:00
csantosm 183f699eab openvidu-browser: Fixed possible non method defined 2020-12-14 12:48:46 +01:00
cruizba fdaa307294 openvidu-deployment: Avoid docker warning in UserData scripts because of HOME not defined 2020-12-10 23:43:26 +01:00
cruizba 25cc91e440 openvidu-deployment: Increased Media Node volume size and parametrize it through '.env'. Bump OPENVIDU_RECORDING_IMAGE in media-node-controller 2020-12-10 22:21:22 +01:00
cruizba d9e6a88f90 openvidu-deployment: Update openvidu-server and openvidu-server-pro images 2020-12-10 20:48:49 +01:00
cruizba 5e9c9f9aef openvidu-deployment: Update coturn, redis, nginx and media-node-controller images 2020-12-10 20:18:34 +01:00
cruizba 205272b356 openvidu-deployment: replicate_amis.sh: Duplicated entries in AMI_LIST 2020-12-10 14:46:38 +01:00
cruizba 46299b3b88 openvidu-deployment: replicate_amis.sh: Add pattern to generated replicated AMIs 2020-12-10 14:32:20 +01:00
cruizba e4d7d9181b openvidu-deployment: replicate_amis.sh: Print AMI_LIST in case of failure we can delete all failed AMIs (OpenVidu PRO and CE) 2020-12-10 12:31:40 +01:00
cruizba 4a62010bff openvidu-deployment: replicate_amis.sh: Print AMI_LIST in case of failure we can delete all failed AMIs (OpenVidu CE) 2020-12-10 12:25:15 +01:00
cruizba 2e0332f405 openvidu-deployment: delete_amis.sh: Process AMI_LIST 2020-12-10 12:00:23 +01:00
cruizba 5e652c19a4 openvidu-deployment: delete_amis.sh: Different region for each iteration 2020-12-10 11:29:47 +01:00
cruizba ca14a626e6 openvidu-deployment: delete_amis.sh: sleep 1 for each operation 2020-12-10 11:27:13 +01:00
cruizba 27a79ee811 openvidu-deployment: Script to delete AMIs for CI 2020-12-10 11:25:18 +01:00
cruizba b3705c3189 openvidu-deployment: Change to gp2. Better pricing, IOPS and space 2020-12-10 11:04:17 +01:00
cruizba 5c6ceab30c openvidu-deployment: Update PRO installation scripts 2020-12-10 10:51:35 +01:00
cruizba d8fbb7ed56 openvidu-deployment: Update CE upgrade install_openvidu.sh 2020-12-10 10:39:07 +01:00
cruizba 0e488955d7 Minor fix templating AMI maps replication 2020-12-10 01:33:48 +01:00
cruizba 4a12137fca openvidu-deployment: Automated replicate AMIs in OpenVidu PRO 2020-12-10 01:11:26 +01:00
cruizba 3bdc50cd1f openvidu-deployment: Typo in script 2020-12-10 00:32:57 +01:00
cruizba 9f32226461 openvidu-deployment: Automated replicate AMIs in OpenVidu CE 2020-12-10 00:31:44 +01:00
cruizba 2784c92ff2 openvidu-deployment: Add env variable to update CF template 2020-12-09 22:59:11 +01:00
cruizba b1f3ee4321 openvidu-deployment: Wait kms in CE to be healthy 2020-12-09 21:57:28 +01:00
pabloFuente 2afc2a7d6c openvidu-server: withActiveRecordings to withRecordings 2020-12-09 17:42:47 +01:00
pabloFuente 5000bdfcde openvidu-server: activeRecordings to recordingIds 2020-12-09 17:38:56 +01:00
pabloFuente c4ca3863ce openvidu-testapp: secure RecordingProperties on Session API dialog 2020-12-03 17:21:22 +01:00
pabloFuente 0f9f0b4565 openvidu-server: use same Media Node id strategy for decrementing active recordings 2020-12-03 17:20:28 +01:00
pabloFuente eedf393f6a openvidu-server: fix possible JsonNull exception in Token class 2020-12-03 13:01:32 +01:00
pabloFuente 888448fa65 openvidu-server: removed KmsManager#isMediaNodeAvailableFor... 2020-12-03 12:48:22 +01:00
pabloFuente da34d6ddb1 openvidu-browser: better browserify build command (creates output folder) 2020-12-03 11:22:51 +01:00
pabloFuente c4387ae516 openvidu-server: extend @DependsOn tag for kmsManager bean 2020-12-03 11:07:54 +01:00
pabloFuente 5733c515e9 openvidu-test-e2e: fix import 2020-12-02 19:35:55 +01:00
pabloFuente 0fe64458af openvidu-testapp: allow choosing Media Node on recording start 2020-12-02 19:15:02 +01:00
pabloFuente eaa1361d04 openvidu-test-e2e: refactor recording utilities to openvidu-test-browsers 2020-12-02 18:43:43 +01:00
pabloFuente 0561c6aab7 openvidu-server: refactor KmsManager#incrementActiveRecordings with more info 2020-12-02 13:30:46 +01:00
pabloFuente 6a844ae145 openvidu-server: active recordings from integer to map of ids 2020-12-02 13:09:31 +01:00
pabloFuente e241d3ff0e openvidu-server: abstract KmsManager increment and decrement active recordings 2020-12-02 11:03:13 +01:00
pabloFuente 5295a3a497 openvidu-server: active recordings counter improved 2020-12-02 10:35:39 +01:00
Carlos Santos 9aa76d80aa
Merge pull request #570 from melanef/bugfix/#569-Video-Dimensions-on-Firefox
openvidu-browser: Bugfix/#569 video dimensions on firefox
2020-12-01 14:17:57 +01:00
csantosm 293899de8a openvidu-browser: Fixed video data timeouts errors
Fixex and cleaned timeout and intervals in sendVideoData method when session is left or when loops are finished
2020-12-01 13:26:41 +01:00
pabloFuente 2e5797e348 openvidu-server: more wait time when waiting for files if docker env 2020-11-30 17:16:22 +01:00
pabloFuente 80867eb7e7 openvidu-server: remove unused method KmsManager#getKmsLoad 2020-11-30 16:41:44 +01:00
pabloFuente 3d93fa6109 openvidu-server: remove RecordingManager.IMAGE_TAG (use OpenviduConfig instead) 2020-11-30 13:55:55 +01:00
Amauri de Melo Junior 7a0592a326 569 - Session: adding fallback values (0) to the height and width in case the stream's videoDimensions are not set and adding safe-check in case videoActive or audioActive were not set 2020-11-30 09:41:56 -03:00
pabloFuente 5d479dc645 openvidu-server: fix log message when recording with video only 2020-11-30 12:50:34 +01:00
pabloFuente e7a1d4228f openvidu-browser: fix support for Microsoft Edge Android 2020-11-30 11:18:33 +01:00
pabloFuente 66829bbe4a openvidu-test-browsers: allow WebDriverWait until with new time 2020-11-27 13:41:28 +01:00
cruizba b369e3ba7a openvidu-deployment: Bump media-node-controller version and add OPENVIDU_RECORDING_IMAGE to pull image to be used for openvidu recordings in Media Nodes 2020-11-26 20:30:33 +01:00
cruizba f848dbcbac openvidu-deployment: coturn logs enabled in image by default 2020-11-26 19:35:39 +01:00
pabloFuente 49d15ffdd5 openvidu-node-client: RecordingProperties shmSize and mediaNode 2020-11-26 16:54:30 +01:00
pabloFuente ceed7dd77b openvidu-java-client: send RecordingProperties shmSize and mediaNode 2020-11-26 16:49:45 +01:00
pabloFuente ddac961c98 openvidu-test-e2e: fix pro test 2020-11-26 15:45:02 +01:00
cruizba d92f1743dc openvidu-deployment: Not use inline if in openvidu script 2020-11-26 14:26:26 +01:00
pabloFuente b305c9211f openvidu-server: allow recordings in waiting-idle-to-terminate Media Nodes 2020-11-26 13:46:29 +01:00
cruizba da617a8537 openvidu-deployment: Run openvidu in CF using openvidu script 2020-11-26 13:45:51 +01:00
csantosm 3d6249418c openvidu-browser: Refactored Platform instances
Platform instances are now initialized in the classes constructors
2020-11-26 13:17:55 +01:00
csantosm 8f7a3f4292 openvidu-browser: Moved types to devDependencies 2020-11-26 13:14:33 +01:00
csantosm 658cb60f34 openvidu-browser: removed unnecesary file 2020-11-26 13:09:22 +01:00
cruizba ef20bf58e5 openvidu-deployment: Don't run elasticsearch and kibana if external url is configured 2020-11-26 12:07:07 +01:00
cruizba 05f9e63076 openvidu-deployment: Drop unnecessary docker logs from filebeat 2020-11-26 11:27:40 +01:00
pabloFuente 3c209188ad openvidu-server: check null on SessionProperties forcedVideoCodec 2020-11-26 10:53:42 +01:00
pabloFuente 5110923929 openvidu-server: fix ComposedQuickStartRecordingService 2020-11-25 22:05:55 +01:00
pabloFuente 58a67da150 openvidu-server: foundation for external composed recording 2020-11-25 21:02:46 +01:00
cruizba d3c75a455f openvidu-deployment: Fix all empty parameters CF 2020-11-25 20:57:39 +01:00
cruizba 7a6ba61712 openvidu-deployment: Fix empty Elasticsearch and Kibana Urls in CF 2020-11-25 20:19:42 +01:00
cruizba 3696c49a9b openvidu-deployment: Disable coturn logs by default 2020-11-25 19:43:33 +01:00
csantosm 6dba08afe4 openvidu-browser: Fixed method invocation
Te condition always is returned true because the method is declared
2020-11-25 15:31:29 +01:00
cruizba 64e5bccaf7 openvidu-server: Fix META-INF transcoding type properties 2020-11-25 15:11:57 +01:00
cruizba 074b14d44b openvidu-server: Rename transcoding properties to OPENVIDU_STREAMS_FORCED_VIDEO_CODEC and OPENVIDU_STREAMS_ALLOW_TRANSCODING 2020-11-25 15:09:08 +01:00
cruizba 6f4b701094 openvidu-deployment: Typo delete https listen directive 2020-11-25 12:34:31 +01:00
cruizba 87b5b6ed88 openvidu-deployment: Fix Special characters on delete nginx listen directive 2020-11-25 12:33:35 +01:00
cruizba 9cfd38e892 openvidu-deployment: Support machines with dual stack IPv4/IPv6 in nginx 2020-11-25 12:07:33 +01:00
cruizba 96468a73a4 Bump openvidu-proxy and openvidu-server versions 2020-11-25 01:15:24 +01:00
cruizba be8e094044 openvidu-deployment: Add timeout in WAIT_KIBANA_URL to avoid possible blocked connections 2020-11-25 00:56:43 +01:00
cruizba 933ac7b2f8 openvidu-deployment: Revert and stop elasticsearch and kibana in CF userData if properties ElasticsearchUrl and KibanaUrl are defined 2020-11-25 00:12:59 +01:00
cruizba b02ed1aac0 openvidu-deployment: Start CF deployment whith openvidu script instead of docker-compose up -d 2020-11-24 23:27:48 +01:00
cruizba c2f8ed59f9 openvidu-deployment: change sed delimiter to ',' instead of '/' if variables are URLS 2020-11-24 22:26:37 +01:00
cruizba 958a645195 openvidu-deployment: Support external ELK from cloudformation parameters 2020-11-24 20:44:48 +01:00
cruizba 1eecd7310d openvidu-deployment: Delete OPENVIDU_PRO_PRIVATE_IP env variable to avoid confusions. It is not necessary 2020-11-24 20:01:05 +01:00
cruizba b896d1a77f openvidu-deployment: Stop elasticsearch and kibana if external services are used 2020-11-24 19:53:54 +01:00
Carlos Ruiz Ballesteros 56cbef5cc7
Merge pull request #560 from robert-scheck/tls-hardening
openvidu-proxy: Make TLS version, ciphers and HSTS configurable
2020-11-23 21:36:13 +01:00
Carlos Ruiz Ballesteros ed2096c18e
Merge pull request #562 from robert-scheck/nginx-version
openvidu-proxy: Disable Nginx version information
2020-11-23 21:32:53 +01:00
Carlos Ruiz Ballesteros 34f0c6c06c
Merge pull request #563 from robert-scheck/redis
openvidu-redis: IPv6 listening (RFC 6540)
2020-11-23 21:30:28 +01:00
Carlos Ruiz Ballesteros f86edd5da6
Merge pull request #559 from robert-scheck/rfc6540
openvidu-proxy: IPv6 listening (RFC 6540)
2020-11-23 21:29:17 +01:00
cruizba c62d1e2323 openvidu-server: Typo in properties META-INF 2020-11-20 17:56:36 +01:00
cruizba 5b2588b050 openvidu-server: Add new transcoding properties to META-INF 2020-11-20 16:11:52 +01:00
pabloFuente fa7f9c3960 Fix integration test 2020-11-20 12:31:44 +01:00
pabloFuente b1d57232cb openvidu-server: remove KmsManager getter only used in test 2020-11-20 11:53:23 +01:00
cruizba 3b8d025f13 openvidu-server-e2e: change wrong test comment description 2020-11-20 00:01:33 +01:00
cruizba c2b0f95c2a openvidu-server-e2e: Add tests for transcoding parameters for java-client, node-client and API Rest 2020-11-19 23:58:26 +01:00
cruizba 5f52d6d3f9 openvidu-test-e2e: Move test for defaults forceCodec and allowTranscoding values 2020-11-19 18:21:46 +01:00
pabloFuente f2a0535378 openvidu-test-e2e: extend Pro tests with server data property 2020-11-19 18:17:01 +01:00
pabloFuente e6fc952fb1 openvidu-test-e2e: removed unnecessary import 2020-11-19 17:27:31 +01:00
pabloFuente 4c9bec87ab openvidu-server: bug fix with default resolution 2020-11-19 17:20:00 +01:00
cruizba 7ddde2fbc4 openvidu-server: Better format for force codec debug logs 2020-11-19 17:14:04 +01:00
cruizba 7a25233b8b Force codec parameters to avoid transcoding 2020-11-19 17:06:50 +01:00
pabloFuente f09b5c97f3 openvidu-test-e2e: fix imports 2020-11-19 15:01:01 +01:00
pabloFuente cfc704c665 Fix tests 2020-11-19 14:44:52 +01:00
pabloFuente b76ec484e5 openvidu-java-client: fix NullPointers if non-defined Connection properties 2020-11-19 13:19:50 +01:00
Robert Scheck c11daa2d8b openvidu-redis: IPv6 listening (RFC 6540) 2020-11-19 12:15:26 +01:00
Robert Scheck b35d210466 openvidu-proxy: Disable Nginx version information
It is a good practice for server hardening to not display any server
component version information, thus this should be disabled for Nginx.
2020-11-19 11:28:09 +01:00
pabloFuente df70d5ca6f openvidu-node-client: serverData fix 2020-11-19 10:36:10 +01:00
Robert Scheck fc92eb7cb4 openvidu-proxy: Make TLS version, ciphers and HSTS configurable
Allow flexible HTTPS security hardening using run-time configuration,
rather just build-time container/volume layering.
2020-11-18 22:07:28 +01:00
Robert Scheck 3d0ab7c92e IPv6 listening (RFC 6540)
Ensure that Nginx listens also additionally on the IPv6 socket if the
operating system inside the container provides IPv6 support. And as per
RFC 6540, IP nowadays means IPv4 and IPv6, not just IPv4-only.
2020-11-18 19:36:20 +01:00
pabloFuente 9b05739ea6 openvidu-java-client: new mediaNode property in RecordingProperties 2020-11-18 14:13:19 +01:00
pabloFuente e308037d8b openvidu-server: refactor RecordingProperties generator in SessionRestController 2020-11-18 13:55:40 +01:00
pabloFuente 4d909d64c6 openvidu-server: DockerManager interface 2020-11-18 13:10:30 +01:00
pabloFuente 1fab774397 openvidu-server: DockerManager interface 2020-11-18 13:09:56 +01:00
pabloFuente 51d224b40b Update to Node 14 in Dockerfiles 2020-11-16 18:25:10 +01:00
pabloFuente df5e4db2ba openvidu-server dashboard: rest of dependencies updated 2020-11-16 16:47:16 +01:00
pabloFuente d1dbcf88ab openvidu-server dashboard to Angular 11 2020-11-16 16:43:40 +01:00
cruizba a60732bb71 openvidu-deployment: Parametrize aws cli docker tag 2020-11-16 15:32:21 +01:00
pabloFuente 55ea32de82 Updated maintainer mail in Dockerfiles 2020-11-16 15:09:13 +01:00
pabloFuente e5a8a172e6 Dockerfiles updated to Ubuntu 18.04 and Java 11 (openvidu-server, openvidu-server-pro, openvidu-server-kms) 2020-11-16 15:06:53 +01:00
cruizba 26cc938756 openvidu-deployment: Create s3 bucket name based on AWS::StackId to be unique instead of using AWS::StackName 2020-11-16 14:32:33 +01:00
pabloFuente 0a1a5e1e67 openvidu-browser: sendVideoData also in Edge 2020-11-16 14:06:18 +01:00
pabloFuente a92335b5be openvidu-browser: allow screen sharing with Edge 2020-11-16 14:04:18 +01:00
pabloFuente c1f34e0757 openvidu-test-e2e:xenial Java 11 update 2020-11-16 02:20:41 +01:00
pabloFuente 57f30b54be openvidu-browser: fix Edge support 2020-11-15 23:24:55 +01:00
pabloFuente 911c996f57 openvidu-test-e2e:bionic updated to Java 11 2020-11-15 23:17:51 +01:00
pabloFuente ababab7942 Java 11 update 2020-11-15 22:12:07 +01:00
pabloFuente 827a5d9428 openvidu-server: remove openvidu-browser 2.15.0 compatibility 2020-11-15 01:18:10 +01:00
pabloFuente e8dd9bd8f4 openvidu-server: signalSent event 2020-11-15 01:15:52 +01:00
pabloFuente ce204c661d openvidu-test-browsers: clean pom dependencies. Update browser users 2020-11-14 23:27:42 +01:00
Pablo Fuente Pérez 5c8779b1ff
Delete OpenViduTestAppE2eAndroidTest.java 2020-11-14 22:56:31 +01:00
pabloFuente 1c21a154cd openvidu-test-e2e: add opera test and refactor Jenkinsfile 2020-11-14 22:42:59 +01:00
pabloFuente f695a13c88 replicate_amis.sh: remove -x flag 2020-11-12 21:27:55 +01:00
pabloFuente 4bcd5c5445 replicate_amis.sh script fix (no credentials) 2020-11-12 21:02:15 +01:00
jenkinsopenvidu a5b5886349 Update to version v2.16.0 2020-11-12 15:45:57 +00:00
pabloFuente 16d8ec80ce Update docker-compose to 2.16.0 2020-11-12 16:36:15 +01:00
pabloFuente 33831f86a7 Jenkinsfile: add -x flag in all bash scripts 2020-11-12 11:34:09 +01:00
cruizba 70d30a5d6c deployment-pro: Add NGINX monitoring 2020-11-12 10:23:46 +01:00
pabloFuente 03ba1578fd openvidu-testapp: updated to openvidu-node-client:2.16.0 2020-11-11 18:33:42 +01:00
openvidu b94fd5930f Update openvidu-java-client to version v2.16.0 2020-11-11 17:32:59 +00:00
jenkinsopenvidu 5993b9f1d9 Update openvidu-node-client to version v2.16.0 2020-11-11 16:51:47 +00:00
pabloFuente e56005bbc1 Jenkinsfile: updated kurento-java build 2020-11-11 15:16:17 +01:00
pabloFuente 1b0f4e0d93 Jenkinsfile: fix KURENTO_JAVA_SNAPSHOT option 2020-11-11 13:49:01 +01:00
pabloFuente 958813a322 Include spring-boot-starter-websocket dependency 2020-11-11 13:36:40 +01:00
pabloFuente fc2b26ce83 Update Spring Boot to 2.3.5.RELEASE 2020-11-11 13:20:15 +01:00
pabloFuente 5018d75142 Spring Boot version down to 2.3.2.RELEASE 2020-11-11 12:29:35 +01:00
pabloFuente 27219a9675 openvidu-parent: dependencies updated 2020-11-11 11:29:50 +01:00
pabloFuente 7584807908 Kurento updated to 6.15.0 2020-11-11 10:39:25 +01:00
pabloFuente 0528713849 openvidu-test-e2e: KMS updated to 6.15.0 in Docker containers 2020-11-10 21:42:21 +01:00
pabloFuente e9b21c9da2 openvidu-node-client: rollback to typescript 3.8.3 2020-11-10 21:40:50 +01:00
pabloFuente fbb7e6ce43 Jenkinsfile: fail execution if error in any inline script 2020-11-10 21:33:46 +01:00
pabloFuente b7f492fead Jenkinsfile: return if error in script 2020-11-10 21:25:25 +01:00
pabloFuente 67ea4f0491 openvidu-node-client: rollback to typescript 3.8.3 2020-11-10 21:13:38 +01:00
pabloFuente 339a894682 Jenkinsfile updated with try-catchs 2020-11-10 20:51:33 +01:00
pabloFuente d4eac2c895 Jenkinsfile: fix root permissions 2020-11-10 20:12:34 +01:00
pabloFuente d1dd6a27cb openvidu-recording image to 2.16.0 2020-11-10 19:29:45 +01:00
pabloFuente 5e85ebd9d1 openvidu-parent: updated openvidu-java-client dependencies 2020-11-10 19:04:17 +01:00
pabloFuente 44317a58ae openvidu-node-client: all dependencies updated 2020-11-10 18:52:21 +01:00
pabloFuente 3c1d4fd69f openvidu-browser: all dependencies updated 2020-11-10 18:22:14 +01:00
pabloFuente da084e2b31 openvidu-browser: improve send videoData with interval 2020-11-10 14:51:19 +01:00
cruizba 03adf77662 openvidu-deployment: Fix stop containers in Media Nodes 2020-11-09 23:01:17 +01:00
cruizba eccd4538fb openvidu-deployment: Pull images correctly on upgrade media-node 2020-11-09 20:39:39 +01:00
cruizba da2973d28f openvidu-deployment: Minor fixes. OV_CE_DEBUG_LEVEL works and move beats to rollback folder on update in openvidu pro server node 2020-11-09 19:35:25 +01:00
cruizba 43c5c4b4a5 openvidu-deployment: Print if nginx is using deprecated API 2020-11-09 18:04:41 +01:00
cruizba 0c38d4d9b8 Custom volume to customize nginx 2020-11-09 16:29:35 +01:00
cruizba d499940495 openvidu-deployment: custom config nginx 2020-11-09 15:33:06 +01:00
cruizba 2113a255e0 openvidu-deployment: Rename default.conf nginx 2020-11-09 15:21:00 +01:00
cruizba d61c6b89c7 Revert nginx 2020-11-09 15:20:04 +01:00
cruizba 39be78b4e5 openvidu-deployment: Some minor fixes nginx and update versions docker-compose 2020-11-09 14:18:40 +01:00
Carlos Santos e551521079
Merge pull request #553 from zvse/master
Update contributors link
2020-11-09 09:54:22 +01:00
zvse 2cdee29954
Update README.md 2020-11-09 10:11:47 +07:00
cruizba 9e0c4aeeea Fix typo in commentary wich causes bad restarts 2020-11-06 17:42:00 +01:00
pabloFuente bdf637229d docker-compose typo 2020-11-06 16:46:08 +01:00
cruizba 45f518362e Increase timeout AMIs 2020-11-06 12:55:42 +01:00
cruizba e2011a52cf openvidu-deployment: Unfortunately, aws cli does not have a way to increase timeout or max retries... 2020-11-06 12:34:22 +01:00
cruizba 218c447e6b openvidu-deployment: Don't use IOPS with gp2 2020-11-06 11:59:32 +01:00
cruizba b05765dd40 Use same volume size in CE and PRO 2020-11-06 11:54:52 +01:00
cruizba 1bff7194f3 openvidu-deployment: Increased AMI size for OpenVidu PRO AMI 2020-11-06 11:48:24 +01:00
cruizba 8bdb5ba8be openvidu-deployment: Don't fail in CI if AWS_KEY_NAME is not defined 2020-11-06 10:58:22 +01:00
cruizba 5319c0a77b openvidu-deployment: Fix some typos 2020-11-06 00:03:12 +01:00
pabloFuente 70de481fef openvidu-testapp: rollback event circular dependency 2020-11-05 23:50:55 +01:00
pabloFuente af3ed0ed5e .env rollback 2020-11-05 19:08:28 +01:00
Pablo Fuente Pérez c9eeef958f
Update .env 2020-11-05 19:04:45 +01:00
Pablo Fuente Pérez 090164ece9
Update .env 2020-11-05 19:02:31 +01:00
cruizba bae71aa837 Bump openvidu pro version 2020-11-05 18:12:01 +01:00
cruizba 1879bc81b5 Comment default value of 'OPENVIDU_PRO_ELASTICSEARCH_MAX_DAYS_DELETE' 2020-11-05 18:08:20 +01:00
pabloFuente df0530d0a8 openvidu-test-e2e: new network quality e2e test 2020-11-05 17:33:25 +01:00
cruizba c3d9fbb60e openvidu-deployment: Default value for instances: c5.xlarge 2020-11-05 16:57:24 +01:00
cruizba 40b0c524f0 openvidu-deployment: Check secret in cloudformation yml 2020-11-05 16:39:22 +01:00
cruizba 21d606cd14 Heap Memory parametrizable 2020-11-05 16:30:34 +01:00
cruizba 641a48af8d openvidu-deployment: Default max log file size to 100M. Parametrizable with DOCKER_LOGS_MAX_SIZE 2020-11-05 15:55:33 +01:00
cruizba 2f10170fc7 Add all kurento logs saved on generating report in CE 2020-11-05 15:18:47 +01:00
cruizba 67167b3378 openvidu-deployment: Fix kms-logs command 2020-11-05 14:58:44 +01:00
cruizba 9b3f579213 openvidu-deployment: Max log size for Kurento Media Server in CE 2020-11-05 13:06:20 +01:00
cruizba 35b667a083 openvidu-deployment: Same commands to access kms logs in CE and PRO. Same directory for kms logs 2020-11-05 12:59:22 +01:00
cruizba 225f1756e2 openvidu-deployment: Better usage of logs command in media nodes 2020-11-05 12:10:29 +01:00
cruizba a4c8e02a3f openvidu-deployment Improve media node scripts 2020-11-05 11:57:29 +01:00
cruizba 3ecd9885d6 Only upgrade from previous version 2020-11-05 00:18:27 +01:00
cruizba 9bd044a98b deployment-openvidu: Stop containers of media-node properly 2020-11-04 23:59:00 +01:00
cruizba c9235e64cf openvidu-deployment: Don't rely on aws http endpoint to update KMS AMI 2020-11-04 22:42:04 +01:00
pabloFuente 42e14a9610 Jenkinsfile: use local openvidu-java-client in openvidu-test-e2e 2020-11-04 21:23:39 +01:00
cruizba 5eff6df41a openvidu-deployment: Typo install script 2020-11-04 20:43:29 +01:00
pabloFuente bb194b750b Jenkinsfile update 2020-11-04 20:32:43 +01:00
cruizba 88840adb8e Updated CE installation and upgrading script:
- Don't download readme.md and reference webpage
- Forbid updates from other versions except 2.15.0
2020-11-04 19:57:31 +01:00
pabloFuente 242b023c2c Network quality level new value and old value 2020-11-04 19:27:58 +01:00
pabloFuente b3f9fa3a40 Jenkinsfile fixed 2020-11-04 19:08:01 +01:00
cruizba eb0593ec02 openvidu-deployment: Update ubuntu AMIs to 18.04 and kurento 6.15.0 in deployments 2020-11-04 18:59:54 +01:00
pabloFuente d9bbe3c3b1 Jenkinsfile: openvidu-java-client commit parameterized 2020-11-04 17:51:19 +01:00
pabloFuente 8543ee2e49 Jenkinsfile fixed 2020-11-04 17:19:21 +01:00
pabloFuente 8715d2109c Jenkinsfile: openvidu-java-client local installation 2020-11-04 17:00:16 +01:00
pabloFuente 14453e5704 Jenkinsfile: force checkout 2020-11-04 16:40:33 +01:00
pabloFuente e7938aa1b9 Jenkinsfile fixed 2020-11-04 16:37:21 +01:00
pabloFuente 5caa51a5e7 Jenkinsfile: parameterized OPENVIDU_TESTE2E_COMMIT 2020-11-04 15:32:32 +01:00
pabloFuente f5daa6877a Jenkinsfile: force checkout to master 2020-11-04 14:15:56 +01:00
pabloFuente f687d269be Jenkinsfile fixed (testapp keys location) 2020-11-04 13:31:55 +01:00
pabloFuente a38f3e087e Jenkinsfile: output testapp in /opt path 2020-11-04 13:10:00 +01:00
pabloFuente d36db20570 Jenkinsfile: configure openvidu-testapp commit 2020-11-04 12:50:07 +01:00
pabloFuente b06ad1d951 openvidu-server: fix openvidu-browser 2.15.0 compatibility 2020-11-04 12:36:47 +01:00
pabloFuente 944f0ac8b4 openvidu-server: support openvidu-browser 2.15.0 2020-11-04 12:31:51 +01:00
cruizba 5dfc8714c1 deployment-openvidu: bump openvidu-server and openvidu-server-pro versions 2020-11-03 19:01:41 +01:00
pabloFuente f6a63e92df openvidu-server: remove userInfo from IP cameras identifiers 2020-11-03 18:31:44 +01:00
cruizba 1ace424d89 openvidu-deployment: Don't use dev repository for kms image in .env 2020-11-03 17:30:58 +01:00
cruizba 0710a5732f Change KMS_DEBUG_LEVEL to KMS_DOCKER_ENV_GST_DEBUG 2020-11-03 17:26:32 +01:00
cruizba 2f00bc74ae deployment-openvidu: Typo 2020-11-03 16:54:13 +01:00
cruizba be69c7e52a deployment-openvidu: delete unnecessary env variables and add media node env variables 2020-11-03 16:33:35 +01:00
cruizba 89f2069791 deployment-openvidu-pro: Bumb coturn and nginx images 2020-11-03 13:50:50 +01:00
cruizba 031aa1bf61 Remove .env file from media-node docker-compose 2020-11-03 12:56:06 +01:00
cruizba f54ebc2851 openvidu-deployment-pro: New media-node-controller 2.0.0-dev1 2020-11-03 12:38:00 +01:00
cruizba 3d3c2242a8 openvidu-deployment: Let configure public ip via env variable in .env 2020-11-02 23:00:25 +01:00
cruizba fd1d7bc313 Change call version to 2.16.0-dev1 2020-11-02 22:48:33 +01:00
cruizba 76805ff543 Minor fix entrypoint openvidu-server and openvidu-server-pro docker images 2020-11-02 21:15:18 +01:00
cruizba 553e63513c openvidu-deployment: install dnsutils in openvidu-server, openvidu-server-pro and coturn to use dig 2020-11-02 20:41:13 +01:00
cruizba b9de4f38be openvidu-deployment: Typo entrypoint.sh 2020-11-02 20:30:36 +01:00
cruizba 6a73083e7b openvidu-deployment: General updates in nginx and public ip discovering:
- Add option to redirect www to non-www (REDIRECT_WWW).
- Add endpoint to check nginx workers.
- Custom virtual hosts (Server blocks) can be added by the user to create custom rules in `/opt/openvidu/custom-nginx-vhost`.
- Parametrize `worker_connections` in nginx.conf (WORKER_CONNECTIONS)
- Improve `discover_my_public_ip.sh` to use dns servers instead of http servers
- Posibility to autodiscover ipv6 if available by using `PUBLIC_IP=auto-ipv6` in nginx, `TURN_PUBLIC_IP=auto-ipv6` in coturn and `COTURN_IP=auto-ipv6` in openvidu-server.
By default ipv4 is used.
2020-11-02 19:46:59 +01:00
cruizba 8b96a5f6ea Merge branch 'master' of github.com:OpenVidu/openvidu into master 2020-11-02 19:26:29 +01:00
pabloFuente ede9589b29 Install ethtool on Dockerfile 2020-11-02 17:06:04 +01:00
pabloFuente e9426aebef openvidu-server: CommandExecutor return output as list 2020-11-02 14:13:14 +01:00
cruizba 44bb958da3 deployment: nginx refactor 2020-11-01 21:03:12 +01:00
cruizba 79648c4006 Add env variable to checkout automatically for releases 2020-10-30 22:42:41 +01:00
cruizba d5e84709ad ci: Add option to upload installation scripts automatically 2020-10-30 22:37:05 +01:00
pabloFuente 0e4bbc4555 SDKs send "mediaNode" property 2020-10-26 19:22:59 +01:00
pabloFuente 64b241c170 Minor documentation fixes 2020-10-25 16:42:40 +01:00
pabloFuente e384a07063 SDKs: SessionProperties#mediaNode 2020-10-23 22:10:15 +02:00
pabloFuente 8ddd9bfc1b openvidu-server-pro: removed MediaNodeStatusManager#instanceStatus 2020-10-23 20:44:00 +02:00
pabloFuente dff5f8f5d4 openvidu-test-e2e: fix Kurento reconnect test 2020-10-23 20:42:19 +02:00
pabloFuente d358562033 openvidu-server: refactor Media Node selection 2020-10-23 20:00:01 +02:00
pabloFuente e32b1f01b4 openvidu-test-e2e: REST API test GET Session with pending Connections 2020-10-23 12:04:06 +02:00
pabloFuente cf5d1f7cdf openvidu-server: update SessionRestController#initializeConnection 2020-10-23 11:51:47 +02:00
pabloFuente c17265a9b0 SDKs: remove record property from deprecated TokenOptions 2020-10-23 11:26:58 +02:00
pabloFuente 06fdc2de54 openvidu-server: RPC joinRoom params to ProtocolElements. Fix Token#getRecord 2020-10-22 21:28:23 +02:00
pabloFuente 7a26b25f12 ConnectionPropertyChanged event 2020-10-22 20:42:54 +02:00
pabloFuente 4ce089acb8 openvidu-browser: change token processing after joinRoom 2020-10-22 13:04:20 +02:00
pabloFuente 97e02094f3 openvidu-server: Postman collection 2020-10-22 11:02:40 +02:00
pabloFuente 41ac4ccec4 openvidu-test-e2e: fix testapp pro test 2020-10-22 00:38:27 +02:00
pabloFuente c5ae79b3a9 Rename ConnectionOptions to ConnectionProperties 2020-10-21 22:19:01 +02:00
cruizba ab9725bd45 openvidu-server: Change propertiesSource to protected to be accessible from openvidu-pro config 2020-10-21 12:32:54 +02:00
pabloFuente 2bf1b2cccb openvidu-test-e2e: test Node client Session.createConnection 2020-10-21 11:48:38 +02:00
pabloFuente 83648d56cd openvidu-node-client: sort Connection.subscribers array before comparison 2020-10-20 22:54:54 +02:00
pabloFuente b3cc4f296a openvidu-node-client: fix Connection comparison 2020-10-20 22:41:47 +02:00
pabloFuente 93c86d3efb openvidu-testapp: updated to new createConnection API 2020-10-20 22:23:08 +02:00
pabloFuente fb393554cb openvidu-node-client: fix imports 2020-10-20 22:22:09 +02:00
pabloFuente f989b0c2ee POST Connection API 2020-10-20 22:09:06 +02:00
pabloFuente 06a602cf62 openvidu-server: ConnectionType transferred to openvidu-java-client 2020-10-19 14:21:49 +02:00
pabloFuente 98d73023d0 openvidu-test-e2e: fix ipCamera test 2020-10-19 13:38:54 +02:00
pabloFuente 759acb1f7c openvidu-server: POST Connection 2020-10-19 12:52:29 +02:00
pabloFuente 43f2f26dbd openvidu-test-e2e: enable test 2020-10-19 10:35:49 +02:00
pabloFuente 5e39e43222 openvidu-test-e2e: fix pro REST API test 2020-10-17 20:44:43 +02:00
pabloFuente 99cd6d2f9c openvidu-server: limit OPENVIDU_SECRET format to [a-zA-Z0-9_-] 2020-10-17 20:22:51 +02:00
pabloFuente 4a7a2808b6 openvidu-server: new activeAt property for Connection entity 2020-10-17 19:51:26 +02:00
pabloFuente 47f090b2cb openvidu-browser: minor updates in NetworkQualityLevelChangedEvent 2020-10-17 19:46:22 +02:00
pabloFuente b4c1df1878 OpenVidu SDKs: update with improved reset process 2020-10-16 13:45:15 +02:00
pabloFuente 77a63a8e54 openvidu-server: GET /connection 2020-10-16 13:41:19 +02:00
csantosm e20db3f503 openvidu-server: Added publishedAt property to participant 2020-10-15 16:46:53 +02:00
cruizba 4c93cb7a7f deployment-openvidu-pro: bump nginx 4.0.0-dev4 2020-10-15 16:25:26 +02:00
cruizba afc6f52f91 deployment-openvidu-ce-and-pro: Add TLSv1.3 and some ssl_chiphers recommended for browsers compatibility: https://ssl-config.mozilla.org/\#server\=nginx\&version\=1.17.7\&config\=intermediate\&openssl\=1.1.1d\&guideline\=5.6 2020-10-15 14:47:53 +02:00
cruizba f73bafdd7a Safely remove certificates folder 2020-10-15 13:35:15 +02:00
pabloFuente 0463230e9d OpenVidu SDKs: getConnection and getConnections 2020-10-15 13:16:29 +02:00
cruizba bf6defc4de deployment-openvidu-ce-and-pro: Fix nginx error on changing certificate types 2020-10-15 02:23:43 +02:00
cruizba 8625a5f18e openvidu-ce-deployment: Don't use externalAddress until find a better solution 2020-10-14 22:44:17 +02:00
cruizba cd101afac2 deployment-openvidu-ce: bump openvidu-version 2.16.0-dev1 2020-10-14 20:02:08 +02:00
pabloFuente a878cbe68a openvidu-server: protect old paths with BasicAuth only if SUPPORT_DEPRECATED_API=true 2020-10-14 17:30:54 +02:00
cruizba ff1b982186 deployment-openvidu-ce-and-pro: Fixing some turn problems in OpenVidu CE 2020-10-14 17:30:28 +02:00
csantosm 8fb0398971 openvidu-browser: Updated network quality checks
- Excluded ionic ios from stats resolution
- Added ionic ios in basic version getting resolution from videoDimensions as Firefox
2020-10-14 17:07:34 +02:00
Carlos Santos 6c49f8463b
Merge pull request #550 from OpenVidu/ov_browser/platform
openvidu-browser: Wrapped platform library
2020-10-14 16:57:44 +02:00
pabloFuente 511d7cb9c1 openvidu-test-e2e: fix ipCameraTest 2020-10-14 14:36:03 +02:00
cruizba 4eded98ad9 deployment-openvidu-ce: Update nginx to new API rules and use deprecated APIs. 2020-10-14 14:34:21 +02:00
pabloFuente 1c72a1ce4e openvidu-server: new "status" property in Connection entities 2020-10-14 14:02:19 +02:00
pabloFuente 6f33bf5def Dashboard: update info path from /info to /openvidu/info 2020-10-14 11:45:58 +02:00
pabloFuente d9127e8c56 openvidu-server: RequestMapping WebSocket path /info 2020-10-14 11:45:05 +02:00
pabloFuente 2ba178760b openvidu-server: fix https://github.com/OpenVidu/openvidu/issues/549 2020-10-13 19:44:55 +02:00
pabloFuente d0483f9033 openvidu-server: close UpdatableTimerTasks on @PreDestroy 2020-10-13 19:03:49 +02:00
csantosm 433d640a8a openvidu-browser: Wrapped platform library 2020-10-13 16:13:37 +02:00
pabloFuente e8121bf35c openvidu-test-e2e: fix Pro /config expected returned value 2020-10-13 14:46:04 +02:00
pabloFuente 3daf4a2ec1 openvidu-server: fix NullPointer on stop composite recording 2020-10-13 14:35:41 +02:00
pabloFuente dfa12ffbb8 openvidu-test-e2e: fix Pro e2e tests 2020-10-13 14:00:54 +02:00
pabloFuente 5e5d886e59 openvidu-test-e2e: update Pro tests with new REST API 2020-10-13 12:44:30 +02:00
csantosm 17ec0c8451 openvidu-browser: Added network quality Firefox support
- Added basic version for Firefox. It does not support webrtc stats approach
2020-10-13 12:29:02 +02:00
pabloFuente ef9d494a70 OpenVidu SDKs: new ConnectionOptions object 2020-10-13 12:28:06 +02:00
pabloFuente 5575bf60cf openvidu-test-e2e: update tests with new CustomHttpClient 2020-10-13 12:23:35 +02:00
pabloFuente 9e957eddf5 openvidu-server: add new "object" and "id" properties to REST entities 2020-10-13 12:21:14 +02:00
csantosm 67c50862bb openvidu-browser: Added connection object to network quality event 2020-10-09 12:46:33 +02:00
csantosm 482d03d8e9 openvidu-server: send network quality event to every participant 2020-10-09 12:35:49 +02:00
pabloFuente acdfcd6559 openvidu-server: Participant object property "session" to "sessionId" 2020-10-09 12:21:52 +02:00
csantosm a3ef133b93 openvidu-server: Renamed networkQualityChanged 2020-10-09 10:52:39 +02:00
csantosm 68f68f62e9 openvidu-client: Renamed networkQualityChanged 2020-10-09 10:52:24 +02:00
csantosm fff755237c openvidu-browser: Renamed networkQualityChanged 2020-10-09 10:52:01 +02:00
pabloFuente 564cab9038 openvidu-test-browsers: update CustomHttpClient to support longer body objects 2020-10-09 10:47:20 +02:00
pabloFuente a40eca6e3b openvidu-testapp: fix get token 2020-10-09 10:46:17 +02:00
pabloFuente 7919caeb23 Jenkinsfile updated 2020-10-08 20:41:55 +02:00
cruizba 44525276c2 openvidu-openvidu-ce-pro: Update coturn image version 2020-10-08 20:02:29 +02:00
cruizba de2cbe4836 deployment-openvidu-ce: Fixed infinite logs in coturn and add new execution mode 2020-10-08 19:58:18 +02:00
pabloFuente 08fcdbdb15 openvidu SDKs: support for updateConnection 2020-10-08 19:31:47 +02:00
pabloFuente f2c37f29a5 openvidu-server: TODO comment in Participant class 2020-10-08 18:38:53 +02:00
csantosm 117366a57f openvidu-browser: Removed sendVideoData call for remote event 2020-10-08 18:26:30 +02:00
csantosm c3be4453d8 openvidu-browser: Replaced setInterval by setTimeout 2020-10-08 18:10:39 +02:00
pabloFuente 52d4ba3f7e openvidu-test-e2e: update to test openvidu-node-client 2020-10-08 17:39:14 +02:00
pabloFuente 3c80cbfede openvidu-testapp: update to support new Session.updateConnection method 2020-10-08 17:37:17 +02:00
csantosm 0a34e7f2de openvidu-browser: Updated Network Quality Event
- Added sendVideoData method
2020-10-08 15:46:03 +02:00
csantosm feb5a54b42 openvidu-client: Added Network Quality support 2020-10-08 15:43:37 +02:00
csantosm 417d645e45 openvidu-server: Added Network Quality support 2020-10-08 15:43:06 +02:00
pabloFuente c24606aca7 openvidu-server: Session and Token objects REST API 2020-10-08 14:33:14 +02:00
cruizba 3499b97301 deployment-openvidu-pro: Only replace OPENVIDU_PRO_AWS_S3_BUCKET with created s3 bucket name if Recording is s3 2020-10-07 23:07:27 +02:00
cruizba 178aae9f20 deployment-openvidu-pro: Add missing rule GetBucketLocation in OpenViduManageEC2Policy 2020-10-07 22:06:24 +02:00
cruizba 08cc2aec16 deployment-openvidu-pro: Typos and remove repeated parameter .env 2020-10-07 22:02:27 +02:00
cruizba 38270cc315 deployment-openvidu-pro: Show error if s3 bucket is defined and 'Recording' is 'local' or 'disabled' 2020-10-07 21:34:38 +02:00
cruizba 6ea52fe061 deployment-openvidu-pro: Easier configuration for s3 recordings 2020-10-07 21:08:14 +02:00
pabloFuente 98a35ab6ec openvidu-node-client: TypeDoc update 2020-10-07 13:11:31 +02:00
pabloFuente c259880c85 openvidu-test-e2e: update Pro test for openvidu-java-client 2020-10-07 13:08:25 +02:00
pabloFuente b1801ae33c openvidu-testapp: allow force publishing independently of role 2020-10-07 12:13:55 +02:00
pabloFuente b479cb2bac openvidu-test-browsers: fix CustomHttpClient response check 2020-10-07 12:12:55 +02:00
pabloFuente 63a6261d88 openvidu-test-e2e: new Pro class. Parent class AbstractOpenViduTestAppE2eTest 2020-10-07 12:12:28 +02:00
pabloFuente 2e919b69e6 openvidu-server: SingleStreamRecordingService refactoring for dynamic records 2020-10-07 12:09:26 +02:00
cruizba 8102784df3 deployment-openvidu-pro: Minor fix UserData script replacing s3 variables 2020-10-06 22:20:52 +02:00
cruizba ffd1f7f5b7 deployment-openvidu-pro: S3 support 2020-10-06 21:13:18 +02:00
cruizba 087a2a0d06 deployment-openvidu-pro: Minor fix configuring different openvidu pro clusters with the same Elastic Stack 2020-10-06 00:40:01 +02:00
pabloFuente ca915fa321 openvidu-server: Token and Session getters and setters update 2020-10-05 19:04:12 +02:00
pabloFuente 4b2c50c8f2 openvidu-server: remove unused method Participant#setToken 2020-10-05 18:52:19 +02:00
pabloFuente cf6c71a71c openvidu-server: rollback RecorderEndpointWrapper 2020-10-05 18:46:38 +02:00
pabloFuente c31f80c2c7 openvidu-server: prepare SessionRestController to be inheritable 2020-10-05 18:43:42 +02:00
pabloFuente 412c169b1b openvidu-testapp: fix SessionPropertiesDialogComponent 2020-10-05 14:12:00 +02:00
pabloFuente d493112f12 openvidu-node-client: TokenOptions.record 2020-10-05 13:59:22 +02:00
pabloFuente 0ae577ce6e openvidu-server: refactor kmsDisconnectionTime parameter 2020-10-05 13:58:13 +02:00
pabloFuente baa7e37c2c openvidu-server: record Token option 2020-10-05 11:16:36 +02:00
pabloFuente 7e75a6568a openvidu-test-e2e: browser event polling thread reset method 2020-10-03 14:32:15 +02:00
cruizba a48778ba91 Deployment: Minor fix deployment Kibana basic auth 2020-10-02 19:03:56 +02:00
pabloFuente 47e6e58ba2 openvidu-server: filter rewrite path warnings updated 2020-10-02 18:48:55 +02:00
pabloFuente 287fe79deb openvidu-server: parameterized deprecated API support with SUPPORT_DEPRECATED_API 2020-10-02 18:41:24 +02:00
pabloFuente 683511ba27 openvidu-testapp: new REST API paths 2020-10-02 18:12:25 +02:00
pabloFuente aeccab7399 openvidu-test-e2e: new REST API paths. Improve assertMediaTracks method 2020-10-02 18:10:49 +02:00
pabloFuente 3bfbc37d5e openvidu-server dashboard updated to use new REST API path 2020-10-02 17:10:59 +02:00
pabloFuente 0e3e82d7e1 OpenVidu SDKs: use new paths to consume REST API 2020-10-02 16:40:03 +02:00
pabloFuente 2d8216fb0d openvidu-server: Recording.url with new path 2020-10-02 16:38:51 +02:00
pabloFuente 039373dc83 openvidu-server: REST info log parameterized with RequestMapping value 2020-10-02 11:38:14 +02:00
pabloFuente f33cfa7bf2 openvidu-test-e2e: reverse breaking change 2020-10-01 22:10:56 +02:00
pabloFuente 18848658f5 openvidu-test-e2e: new EXTERNAL_CUSTOM_LAYOUT_PARAMS system property 2020-10-01 22:03:01 +02:00
pabloFuente 528372e6f6 openvidu-test-e2e: customLayoutRecordTest parameterized with EXTERNAL_CUSTOM_LAYOUT_URL 2020-10-01 21:03:23 +02:00
pabloFuente 07b3681524 openvidu-test-e2e: Jenkinsfile fixed 2020-10-01 20:19:10 +02:00
pabloFuente 21584e602d openvidu-server: updated custom layout recording URL with RequestMappings value 2020-10-01 19:33:26 +02:00
pabloFuente 2aecbf625e openvidu-test-browsers: fix CustomWebhook 2020-10-01 18:55:56 +02:00
pabloFuente 3056d21320 openvidu-test-e2e: custom layout recording test 2020-10-01 18:36:01 +02:00
pabloFuente 6a8670304f openvidu-test-e2e: wait time after alert accepted 2020-10-01 16:07:53 +02:00
Pablo Fuente Pérez 92123d6df5
Add files via upload 2020-10-01 14:57:23 +02:00
pabloFuente b3081d6d43 openvidu-test-e2e: RestApiTest extended to test token invalidation 2020-10-01 14:05:27 +02:00
pabloFuente c38d905a46 openvidu-test-e2e: recording tests renamed 2020-10-01 13:47:07 +02:00
pabloFuente bdd54e01e5 openvidu-server: new request mapping paths 2020-10-01 13:35:05 +02:00
pabloFuente 04c012a327 openvidu-server: return connectionId on POST /api/tokens 2020-09-30 18:53:39 +02:00
pabloFuente 6b6d6c2ba4 openvidu-browser: sessionDisconnected event on failed reconnection with no Connection 2020-09-30 13:07:19 +02:00
Pablo Fuente Pérez 219d45bfe9
Merge pull request #546 from wm-david-gomez/fix-promises-local-recorder
Resolve promises in pause and resume methods from LocalRecorder
2020-09-30 10:32:33 +02:00
wm-david-gomez 9536b4bcf1 Resolve promises in pause and resume methods from LocalRecorder 2020-09-30 09:42:16 +02:00
pabloFuente 0254f0f078 openvidu-server: TokenGenerator refactoring 2020-09-29 15:02:56 +02:00
pabloFuente 6a8e85c763 openvidu-server: KmsManager#atLeastOneConnectedAndRunningKms 2020-09-29 14:20:45 +02:00
pabloFuente 12f215ddd9 openvidu-browser: fix unexpected undefined exception on reconnected callback 2020-09-29 11:59:30 +02:00
cruizba a852a826fa deployment-openvidu-pro: Use oss beats services 2020-09-28 20:06:56 +02:00
cruizba 709d7d2a5c deployment-openvidu-pro: Updated to work with external ELK services 2020-09-28 20:02:21 +02:00
pabloFuente 521909c931 openvidu-server: DockerManager.close 2020-09-28 18:26:37 +02:00
pabloFuente d039f71fdb New composed_quick_start.sh logic to wait for the ffmpeg process to end 2020-09-28 11:03:24 +02:00
cruizba f886ac72db Merge branch 'master' of github.com:OpenVidu/openvidu into master 2020-09-28 10:07:21 +02:00
cruizba 92956887b5 Deployment: ELK Updates
- Filebeat can be used externally with and without de security
- Minor fix in Label ELK label description in CF template
2020-09-28 10:06:16 +02:00
pabloFuente ed7aaec1d5 openvidu-test-e2e: longer recording started event timeouts 2020-09-26 18:50:00 +02:00
pabloFuente 90299411bb openvidu-test-e2e: remoteComposedQuickStartRecordTest fix 2020-09-26 18:43:49 +02:00
pabloFuente b5f83ea7cc openvidu-test-e2e: fixed composed recording tests 2020-09-26 17:14:15 +02:00
pabloFuente 0d00ad8fee openvidu-server: fix close session with recording in starting status 2020-09-26 17:13:37 +02:00
pabloFuente 3a61ce0f86 openvidu-server: fix recording started client event 2020-09-26 01:12:25 +02:00
pabloFuente 03503e586c openvidu-server: fixed wait for video file not empty in COMPOSED video recording 2020-09-25 23:53:21 +02:00
pabloFuente e294ac606b openvidu-server: typo fixed 2020-09-25 17:36:49 +02:00
pabloFuente eb7fb81995 openvidu-test-e2e: improved quick start record test 2020-09-25 17:34:46 +02:00
pabloFuente b9d28d11cd openvidu-server: composed quickstart recording stop bug fix 2020-09-25 16:45:03 +02:00
pabloFuente 593b2fa80d openvidu-server: updateRecordingAttributes to not return object 2020-09-24 12:37:20 +02:00
pabloFuente 407f72f0d1 openvidu-server: do not set recording URL to null while uploading 2020-09-24 12:30:22 +02:00
cruizba bea77f5360 Deployment: Update to dev version docker-compose 2020-09-23 21:40:48 +02:00
cruizba 353989e26b Deployment: Fix typos Elasticsearch OpenVidu Pro 2020-09-22 19:04:50 +02:00
cruizba 699bf34275 Merge branch 'master' of github.com:OpenVidu/openvidu into master 2020-09-22 18:19:59 +02:00
cruizba df92cca9de Deployment: External and secure Kibana and Elasticsearch in can be configured in OpenVidu Pro Node 2020-09-22 18:19:51 +02:00
pabloFuente 0f565f5b45 Typedoc config updated to avoid protected classes 2020-09-22 17:15:12 +02:00
pabloFuente 71c5409b05 openvidu-server: return 501 for any recording REST method if recording disabled 2020-09-22 10:34:51 +02:00
csantosm 5f258daf80 openvidu-browser: Exported network quality types
Exported NetworkQualityChangedEvent and NetworkQualityChangedReason
2020-09-18 16:20:28 +02:00
pabloFuente a32351c029 openvidu-server: default value for networkCache 2020-09-18 15:23:22 +02:00
csantosm c39e16852f openvidu-browser: Network quality
- Added networkQualityChanged event
2020-09-18 15:15:55 +02:00
csantosm 1bfde64752 openvidu-client: Network quality
- Added network fields to ProtocolElements
2020-09-18 15:14:41 +02:00
csantosm 80a052fcea openvidu-server: Network quality
- Added method to send notification with network quality
- Added double parser method
2020-09-18 15:13:52 +02:00
pabloFuente 70831114fe openvidu-server: refactor single stream recorder 2020-09-18 15:04:15 +02:00
pabloFuente 23e965f9f4 openvidu-server: networkCache minor refactoring 2020-09-18 15:00:59 +02:00
Pablo Fuente Pérez d0ed5e5345
Merge pull request #540 from naevatec/rtsp_network_cache_param
Added network cache param to IP cameras
2020-09-18 13:41:44 +02:00
pabloFuente 207acdd2b6 openvidu-server: use recordingId instead of sessionId for managing single stream recorders (NullPointer fix) 2020-09-18 12:37:13 +02:00
pabloFuente 01894918b7 openvidu-server: recording upload refactoring 2020-09-17 17:47:26 +02:00
pabloFuente 693e2e6583 openvidu-browser: clean "closeSession" configuration from jsonrpcclient.js 2020-09-17 16:50:41 +02:00
cruizba 834da536b6 Load dinamically env variables from .env file 2020-09-16 23:05:25 +02:00
pabloFuente e4ccb6f3bb openvidu-server: OPENVIDU_RECORDING_COMPOSED_BASICAUTH 2020-09-16 13:50:22 +02:00
cruizba 08f4b895c0 Delete aws market env variables 2020-09-14 14:37:44 +02:00
Saul Pablo Labajo Izquierdo 7ceba5e098 Respected Java naming conventions 2020-09-12 14:37:45 +02:00
Saul Pablo Labajo Izquierdo 0fdbcaac90 Added network cache param to IP cameras 2020-09-12 09:57:33 +02:00
pabloFuente a2daa6baa0 Jenkinsfile updated to not overwrite branch changes 2020-09-11 12:35:42 +02:00
pabloFuente 343e4ec200 Jenkinsfile updated to fix openvidu-server.log 2020-09-10 17:21:46 +02:00
pabloFuente 11dbc750c6 Jenkinsfile updated with fixed openvidu-server.log artifact 2020-09-10 14:31:29 +02:00
pabloFuente e3c61b1707 Jenkinsfile updated to avoid openvidu-java-client overwrite when checking out 2020-09-10 13:56:20 +02:00
pabloFuente 35e62f3c2c Jenkinsfile updated to avoid npm build terminal query 2020-09-09 16:29:41 +02:00
pabloFuente db5f58f5ca Jenkinsfile updated to force checkouts 2020-09-09 14:34:11 +02:00
pabloFuente 7602e8f51d Jenkinsfile updated to pack npm libraries 2020-09-09 14:26:47 +02:00
pabloFuente 7acb8e328d Jenkinsfile updated to support openvidu-server commit selection 2020-09-09 13:06:50 +02:00
pabloFuente 557a2e764a Updated Jenkinsfile to support openvidu-browser, openvidu-node-client commit selection 2020-09-09 12:40:26 +02:00
pabloFuente 8f1512f965 openvidu-test-e2e: fix streamPropertyChanged test 2020-09-03 22:13:20 +02:00
pabloFuente 7b2c9f9118 openvidu-test-e2e: fix streamPropertyChanged 2020-09-03 21:41:13 +02:00
pabloFuente e37e5b7922 openvidu-test-e2e: print out streamPropertyChanged events 2020-09-03 20:09:51 +02:00
pabloFuente 401fc3d7fa openvidu-server: seal stopped metadata file before posting CDR/Webhook event 2020-09-03 14:42:45 +02:00
pabloFuente b1836df20b openvidu-testapp: openvidu-node-client dependency updated 2020-09-03 14:01:45 +02:00
pabloFuente 1d48c918a9 openvidu-server: fixed ComposedQuickStartRecordingServer dead code 2020-09-03 13:44:20 +02:00
pabloFuente ec03629c88 openvidu-server: mandatory alphanumeric recording names 2020-09-03 12:00:02 +02:00
pabloFuente 5da1a82923 Recording scripts new flag --disabled-dev-shm-size for google-chrome process 2020-09-03 10:55:02 +02:00
pabloFuente 6f976246b4 openvidu-browser: better Stream.typeOfVideo documentation 2020-08-25 11:35:13 +02:00
openvidu 81fb623a93 Update openvidu-java-client to version v2.15.1 2020-08-20 10:53:40 +00:00
pabloFuente 7ab1de4daf openvidu-java-client: null pointer fix when resetting IPCAM Connection object 2020-08-20 11:53:05 +02:00
Carlos Santos 285d1cbb8b
Updated README 2020-08-19 11:22:15 +02:00
Pablo Fuente Pérez 27fcf01a63
Update .env 2020-08-17 13:42:15 +02:00
Pablo Fuente Pérez 8ba440f90f
Update .env 2020-08-17 13:41:47 +02:00
cruizba 8756e669f9 Revert vnc 2020-07-24 16:24:30 +02:00
cruizba c8b5fd25a2 Minor fix dockerfile recording 2020-07-24 14:26:53 +02:00
cruizba 2716777f2b Run VNC temporaly to check recording 2020-07-24 14:13:30 +02:00
cruizba d965739a53 Add CF_RELEASE boolean env variable. If true, checkout git OpenVidu/openvidu to the specified OPENVIDU_VERSION 2020-07-21 17:31:47 +02:00
cruizba 8fb4f11a6f Add env variable CF_RELEASE for CF related jobs 2020-07-21 17:29:10 +02:00
cruizba 66a1e6e723 CI: Fix url download to deployments/ce/docker-compose 2020-07-21 17:26:51 +02:00
cruizba b4ef0b1022 CI: Fix url download to deployments/ce/docker-compose 2020-07-21 17:23:02 +02:00
cruizba f6363dfeab CI: Make installation script public 2020-07-21 17:06:47 +02:00
cruizba b6f7f88a7e CI: Update installation script on UPDATE_INSTALLATION_SCRIPT=true 2020-07-21 16:58:58 +02:00
cruizba e87b2b30e1 CI: Fix deployment scripts for new jobs 2020-07-21 16:28:57 +02:00
csantosm dfca30ef77 opnevidu-browser: Fixed ionic iOS check 2020-07-17 15:45:56 +02:00
cruizba f3c5bfe321 Deployment repos migration:
- Move deployment stuff of openvidu-ce from https://github.com/OpenVidu/openvidu-cloud-devops
- Move deployment stuff of openvidu-pro from https://github.com/OpenVidu/openvidu-pro-clustering
- Remove readmes to avoid confusions of official documentation
- Update installation scripts to use this repo
- Better folder structure:
   - docker-compose -> Include docker-compose files for deployments
   - docker -> Include docker images
   - aws -> Cloudformation related stuff for aws.
2020-07-16 20:09:48 +02:00
Micael Gallego 4bde653c65
Delete readme.md to avoid mistakes with the docs 2020-07-10 19:50:59 +02:00
pabloFuente b31263d562 openvidu-recording Chrome improved get display num 2020-07-09 15:11:45 +02:00
pabloFuente 4ac3f4beff openvidu-recording Firefox container fix display num 2020-07-09 15:09:20 +02:00
pabloFuente 5124e32a1d openvidu-recording container Dockerfile 20.04 updated 2020-07-09 11:51:09 +02:00
Pablo Fuente Pérez b229a65ca2
Delete npm-shrinkwrap.json 2020-07-08 11:55:48 +02:00
csantosm 619c14f495 openvidu-browser: Replaced error message by warning when checking version 2020-07-08 11:17:12 +02:00
Pablo Fuente Pérez fd1ecce86b
Update install_openvidu.sh 2020-07-03 13:54:55 +02:00
pabloFuente dc9f0b1e2b openvidu-java-client: extend nexus plugin release timeout 2020-07-03 13:27:06 +02:00
pabloFuente 1e5cf3906f Updated Docker versions to 2.15.0 2020-07-03 13:23:11 +02:00
jenkinsopenvidu 5ab0f31f54 Update to version v2.15.0 2020-07-03 10:53:47 +00:00
pabloFuente 3c9adab923 Update openvidu-java-client to version v2.15.0 2020-07-03 12:33:02 +02:00
pabloFuente a5921519a1 Kurento update to 6.14.0 2020-07-03 11:14:08 +02:00
jenkinsopenvidu b5176a71e4 Update openvidu-node-client to version v2.15.0 2020-07-03 09:10:19 +00:00
cruizba cf2b37414f Don't remove container if it does not exists 2020-07-03 10:28:43 +02:00
cruizba df314ba6e2 Fix, don't start container if recording module is false 2020-07-03 10:17:13 +02:00
cruizba 771b24755e Update recorder default version 2020-07-02 22:21:03 +02:00
cruizba af2aca6c8d openvidu --report gets information about environment variables of all the containers and show all logs 2020-07-02 19:01:27 +02:00
pabloFuente ce91f10005 openvidu-test-e2e images Docker installation 2020-07-02 17:11:18 +02:00
cruizba 1d92b7e932 Retagged openvidu/openvidu-proxy from 3.0.0-beta1 to 3.0.0 2020-07-02 16:45:06 +02:00
cruizba 9261554239 Added debug mode to .env docker-compose deployment 2020-07-02 15:51:40 +02:00
pabloFuente c8a52e9ae2 openvidu-test-e2e: composed recording quick start test extended 2020-07-02 15:12:07 +02:00
pabloFuente 2dada07dcb openvidu-server: COMPOSED_QUICK_START fixes when stopping and launching container 2020-07-02 14:41:54 +02:00
pabloFuente b921bac370 openvidu-server: fix recordingStarted notification on COMPOSED_QUICK_START 2020-07-02 13:27:36 +02:00
pabloFuente 0308855535 openvidu-server: minor comment updated 2020-07-02 12:22:34 +02:00
pabloFuente 8538327940 OpenVidu SDKs docs updated with COMPOSED_QUICK_START 2020-07-02 12:16:39 +02:00
cruizba 27ae38c27a Merge branch 'master' of https://github.com/OpenVidu/openvidu 2020-07-02 12:00:14 +02:00
cruizba 2e214cbcd5 echo End of recording after thumbnail finished to inform openvidu-server that recording is ended 2020-07-02 12:00:02 +02:00
csantosm bc65f454a2 Merge branch 'openvidu_browser_refactor' 2020-07-02 11:50:44 +02:00
csantosm 5857e46f3c openvidu-browser: strengthened enumerateDevices condition. Fixes #498 2020-07-02 11:45:47 +02:00
cruizba 8c2060ab35 Use COMPOSED always if COMPOSED is defaultOutputMode 2020-07-02 11:42:52 +02:00
pabloFuente 1651d67f26 openvidu-server: imports fix 2020-07-02 11:24:40 +02:00
pabloFuente 476428b9ae openvidu-server: if COMPOSED also if COMPOSED_QUICK_START 2020-07-02 11:22:50 +02:00
cruizba af9cbbf742 Minor fix recording image debug mode 2020-07-02 10:32:07 +02:00
cruizba f3cf5104c1 Minor fix on tag on create_image recording script 2020-07-01 20:31:26 +02:00
cruizba 5754fb20be Only push openvidu recording if image is created correctly 2020-07-01 20:29:22 +02:00
cruizba a489221ddf Fix ubuntu image parameter to build openvidu recording image 2020-07-01 20:24:04 +02:00
cruizba 5477e52db1 Minor fix to create_image recording script 2020-07-01 20:21:35 +02:00
cruizba c68552a172 Adapted create_image recording to jenkins job 2020-07-01 20:18:58 +02:00
pabloFuente 9729ef94e3 openvidu-server: minor POST /api/recordings/start refactoring 2020-07-01 18:57:23 +02:00
cruizba 8302571924 openvidu-server: Use as outputMode=COMPOSED_QUICK_START if defaultModeOutput=COMPOSED_QUICK_START and outputMode=COMPOSED 2020-07-01 18:32:02 +02:00
pabloFuente b58250b64f OpenVidu SDKs COMPOSED_QUICK_START doc description 2020-07-01 17:38:01 +02:00
cruizba 11540fb50a Marked COMPOSED_QUICK_START as experimental 2020-07-01 14:12:22 +02:00
cruizba 292771371e Merge branch 'master' of https://github.com/OpenVidu/openvidu 2020-07-01 14:03:25 +02:00
cruizba 0a02ae8059 openvidu-server, openvidu-node-client, openvidu-java-client: Add COMPOSED_QUICK_START outputMode 2020-07-01 14:02:32 +02:00
csantosm 0c35f85602 Refactored openvidu-browser 2020-07-01 11:58:01 +02:00
OscarSotoSanchez 3b5668d828 Proxy updated for auto renew letscrypt certificated 2020-06-29 16:37:26 +02:00
cruizba 45d3ba6078 openvidu-server: Created entrypoint for new composed recording mode: COMPOSED_QUICK_START. 2020-06-26 18:05:00 +02:00
cruizba 7c0b0ba9d3 Get container running by imageId only if running container can not be found only with image name 2020-06-23 17:36:23 +02:00
cruizba 87c9d8f01c openvidu-server: Minor fix in getRunningContainers 2020-06-23 17:27:46 +02:00
cruizba 496c1cff92 Remove sha256 method and add getImageId and getRunningContainers returns container ids if an image id is passed 2020-06-23 17:19:27 +02:00
cruizba 08647869d3 Added method to get sha256 id of a Docker image 2020-06-23 13:13:02 +02:00
cruizba 499bd8afc5 Parametrized create_image.sh scripts for CI 2020-06-23 12:11:54 +02:00
cruizba 43bf7f44c2 Copy old .env in rollback too 2020-06-18 09:43:45 +02:00
cruizba 2e923c4827 KMS_IMAGE updated in .env 2020-06-18 01:31:00 +02:00
cruizba 85a95bb3db Update versions openvidu-server and KMS 2020-06-18 00:53:57 +02:00
pabloFuente 84a4545d45 openvidu-server: removed debug log lines 2020-06-17 20:27:51 +02:00
pabloFuente 759910774f openvidu-server: fix NullPointer if no shmSize passed to POST /api/recordings/start 2020-06-17 20:26:28 +02:00
pabloFuente 37c05cb82a openvidu-server: parameterized shmSize on POST /api/recordings/start 2020-06-17 19:05:23 +02:00
pabloFuente a4fcf90745 openvidu-server: webhook sender uses single thread executor 2020-06-17 18:11:50 +02:00
pabloFuente 7085bb899b openvidu-server: protect get KMS if there's no running and connected one 2020-06-16 14:53:47 +02:00
pabloFuente a3406d3dfe openvidu-server: protect concurrent recording start methods 2020-06-12 13:21:56 +02:00
pabloFuente d5b3b9dde7 openvidu-server: automatic recording cancelation also for ALWAYS recordings 2020-06-12 12:16:36 +02:00
pabloFuente 26f6112b72 openvidu-server: overwritable remote recording path 2020-06-11 18:07:55 +02:00
pabloFuente d0c1d5346b openvidu-server: add trailing slash to all system path properties 2020-06-11 18:05:31 +02:00
pabloFuente 2d64569392 openvidu-node-client: rollback to typescript 3.8.3 2020-06-11 13:56:37 +02:00
pabloFuente 1c3a120e0e openvidu-node-client: fix OpenVidu Server URL (not force HTTPS) 2020-06-11 13:15:30 +02:00
pabloFuente 0e30cea22c openvidu-node-client: dependencies updated 2020-06-11 13:06:15 +02:00
cruizba 1d252e62ec openvidu-server: Add labels and getLabels in DockerManager 2020-06-10 21:41:40 +02:00
pabloFuente ac30d55a1e openvidu-server: improved reconnection polling (reset sessions only if new KMS) 2020-06-10 18:07:07 +02:00
cruizba 34a45ff923 Add privileged flag to DockerManager 2020-06-09 16:54:01 +02:00
csantosm 37b4f41862 openvidu-browser: iPad PRO support. Fixes #490
* iPad PRO support
* Refactor checkSystemRequeriments method
2020-06-09 15:27:00 +02:00
pabloFuente 5c4b9c7997 openvidu-server: send webhook events in the background 2020-06-08 23:19:15 +02:00
pabloFuente 1e03af3ea3 openvidu-server: COMPOSED recording container update 2020-06-08 12:19:30 +02:00
pabloFuente ac81abf7fd openvidu-server: parameterized wait timeout for CommandExecutor 2020-06-05 11:00:15 +02:00
csantosm 9ad21624d3 openvidu-browser: removed ionic iOS limitation
With iosrct 6.0.12 release which included the fix of the issue https://github.com/cordova-rtc/cordova-plugin-iosrtc/issues/442 ionic iOS can uses the current WebRTC API so this code is unnecessary.
2020-06-04 16:50:34 +02:00
cruizba 7930d82864 Merge branch 'master' of https://github.com/OpenVidu/openvidu 2020-06-04 14:52:16 +02:00
cruizba 806794bb7d Curl Fixed for Kibana 7.7.0 version 2020-06-04 14:52:01 +02:00
pabloFuente c4a6ca5543 openvidu-server: CommandExecutor timeout 2020-06-04 12:28:40 +02:00
cruizba c150b87a2a openvidu-server: addError in OpenViduConfig change to protected method 2020-06-03 13:22:38 +02:00
csantosm 699962969e openvidu-browser: support Samsung browser in Samsung devices. Fixes #489 2020-06-02 14:09:19 +02:00
pabloFuente 1983fc87fc openvidu-server: updated MediaNodeStatusManagerDummy 2020-06-01 02:05:23 +02:00
pabloFuente a8467fc868 openvidu-server: MediaNodeStatusManager#isCanceled 2020-06-01 02:00:23 +02:00
pabloFuente 668c879462 openvidu-server: KmsManager#generateKmsId 2020-05-31 12:40:25 +02:00
pabloFuente d1aa03354e openvidu-server: removed "sendMediaNodeAddedEvent" parameter 2020-05-29 21:32:50 +02:00
cruizba cc0479deb3 openvidu-server: Add user argument to DockerManager 2020-05-29 02:37:02 +02:00
cruizba 555aee1e57 openvidu-server: Add command argument in DockerManager to run containers 2020-05-27 13:34:04 +02:00
pabloFuente 5ace568510 Merge branch 'hypersay-audio-video-state-subscriber' 2020-05-26 15:05:51 +02:00
pabloFuente 0c60f665c1 Merge branch 'audio-video-state-subscriber' of https://github.com/hypersay/openvidu into hypersay-audio-video-state-subscriber
# Conflicts:
#	openvidu-browser/src/OpenVidu/Subscriber.ts
2020-05-26 15:05:43 +02:00
pabloFuente 61d0867a25 openvidu-server: new autoscaling event 2020-05-25 19:11:06 +02:00
pabloFuente f5171c9306 openvidu-server: concurrent double initialization of single stream recording fix 2020-05-23 22:45:42 +02:00
pabloFuente 3374e511ee openvidu-server: recording concurrent protection on first user publishing 2020-05-23 14:51:34 +02:00
pabloFuente f398c80d59 WebDriverManager dependency from 3.8.1 to 4.0.0 2020-05-20 14:40:25 +02:00
pabloFuente a0ac5fa768 openvidu-server: UpdatableTimerTask. Use it in session garbage collector 2020-05-19 14:13:01 +02:00
pabloFuente 5c9e18c7ba openvidu-server: normalize DOTENV_PATH 2020-05-19 13:25:56 +02:00
pabloFuente f17db7645b openvidu-server: LoadManager#calculateLoad now returns double 2020-05-19 13:21:32 +02:00
OscarSotoSanchez b545a57646 retain deploy mode 2020-05-19 11:56:15 +02:00
OscarSotoSanchez cd81df6c98 install script updated 2020-05-19 11:31:18 +02:00
OscarSotoSanchez 885c1ce9f4 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-05-18 16:52:52 +02:00
OscarSotoSanchez f3cf15e2c2 docker-compose updated 2020-05-18 16:52:47 +02:00
pabloFuente f3a4c3d228 openvidu-server: Apache Commons Lang3 dependency updated 2020-05-18 14:44:03 +02:00
OscarSotoSanchez 9e3dc70a46 unused variable removed from openvidu server docker image 2020-05-18 14:31:20 +02:00
OscarSotoSanchez 1ec832c665 redis-tools added into docker container 2020-05-18 14:27:57 +02:00
OscarSotoSanchez d05d272322 openvidu command updated 2020-05-18 13:28:38 +02:00
OscarSotoSanchez abc12f6467 Openvidu Call updated 2020-05-18 11:38:28 +02:00
OscarSotoSanchez c5a31f37c4 remove spaces in .env file 2020-05-18 11:38:12 +02:00
OscarSotoSanchez 720083614c version and report command added in openvidu script 2020-05-18 11:37:43 +02:00
pabloFuente 72c62772f2 openvidu-server: KmsManager.MAX_SECONDS_LOCK_WAIT 2020-05-17 18:12:32 +02:00
Carlos Santos c9a5709852
Merge pull request #469 from mihailj/master
openvidu-browser: support screen sharing on Safari >= 13
2020-05-15 11:16:24 +02:00
CSantos 9ef0afeca5 openvidu-browser: Updated Safari screenShare requirements 2020-05-15 11:09:06 +02:00
Mihail 3ec0b0d4d7 enable screen sharing on Safari version >= 13 2020-05-14 21:24:36 +02:00
pabloFuente d5a97d2d66 openvidu-server: MediaEndpoint candidates list synchronized 2020-05-14 18:31:11 +02:00
pabloFuente 54b20665f3 openvidu-server: rollback MediaEndpoint transaction 2020-05-14 18:11:52 +02:00
pabloFuente 50ab460f1d openvidu-server: gather all remote info from MediaEndpoint with Transaction 2020-05-14 17:41:22 +02:00
pabloFuente 19ff07cd9e openvidu-server: logback prints full thread names 2020-05-14 14:56:45 +02:00
pabloFuente 8863a6e2b1 openvidu-server: generatedCandidates to gatheredCandidates 2020-05-14 14:37:49 +02:00
pabloFuente d58201d550 openvidu-server: protect LocalSDP retrieval from KMS. Gathered candidates 2020-05-14 13:59:25 +02:00
OscarSotoSanchez f870cbdfa9 openvidu-server:2.14.1-beta1 in docker-compose 2020-05-13 16:55:26 +02:00
pabloFuente c87559626e openvidu-server: configure "redis-cli" commands password 2020-05-13 16:45:46 +02:00
OscarSotoSanchez 1a0713ebbb secure redis 2020-05-13 16:25:53 +02:00
jenkinsopenvidu 422c81397b Update to version v2.14.0 2020-05-12 12:06:07 +00:00
pabloFuente 3f712a4d1e Docker files updated to 2.14.0 2020-05-12 13:51:17 +02:00
pabloFuente 53e7b242dc Rollback to kurento-client 6.13.1 2020-05-12 13:46:27 +02:00
openvidu c714551259 Update openvidu-java-client to version v2.14.0 2020-05-12 11:25:26 +00:00
jenkinsopenvidu 8ea0587b7a Update openvidu-node-client to version v2.14.0 2020-05-12 11:20:26 +00:00
pabloFuente 62a6cee587 Kurento updated to 6.13.2 2020-05-12 13:13:16 +02:00
OscarSotoSanchez 70f10ea4e9 ov call updated 2020-05-11 14:34:28 +02:00
OscarSotoSanchez 11c2255343 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-05-11 10:38:03 +02:00
OscarSotoSanchez c9542239e6 ov-call in docker-compose upgrade 2020-05-11 10:37:58 +02:00
pabloFuente 12a75319bf openvidu-server: minor changes in success output of installation script 2020-05-08 18:49:32 +02:00
OscarSotoSanchez 4eeed8fefd default proxy in specific port 2020-05-08 16:45:11 +02:00
OscarSotoSanchez f5cfa00871 remove discover_my_public_ip.sh after compile docker image 2020-05-08 14:20:30 +02:00
OscarSotoSanchez 403a31dac7 added discover_my_public_ip.sh in gitignore 2020-05-08 14:17:26 +02:00
OscarSotoSanchez 2794372f16 fixed check email in LetsEncrypt mode 2020-05-08 14:15:13 +02:00
OscarSotoSanchez 002753443e kms image updated 2020-05-08 12:59:26 +02:00
OscarSotoSanchez b463dea010 updated docker-compose 2.14.0-beta1 2020-05-08 12:25:03 +02:00
OscarSotoSanchez 4b150bb62c Merge branch 'master' of github.com:OpenVidu/openvidu 2020-05-08 12:03:38 +02:00
OscarSotoSanchez a4d81bdc80 copy discover_my_public_ip.sh when create image 2020-05-08 12:03:34 +02:00
pabloFuente b9e0b62261 openvidu-server: close auxiliary ApplicationContext 2020-05-08 11:58:36 +02:00
OscarSotoSanchez a4e4abd0e5 changed messages in install script 2020-05-07 12:48:37 +02:00
OscarSotoSanchez 39e86f1189 install script upgrade 2020-05-07 12:38:56 +02:00
OscarSotoSanchez 67fc998618 installation script upgrade 2020-05-07 12:16:31 +02:00
OscarSotoSanchez 1f7440354d installation script upgrade 2020-05-06 16:44:47 +02:00
OscarSotoSanchez f9dd7cf58f upgrade installation script 2020-05-06 16:28:47 +02:00
OscarSotoSanchez 8244617104 fixed move .env error in install script 2020-05-06 14:53:20 +02:00
OscarSotoSanchez cd62550d90 openvidu command updated 2020-05-06 14:46:05 +02:00
OscarSotoSanchez 6c77900977 auto download images in install script 2020-05-06 14:34:20 +02:00
OscarSotoSanchez ef2dd58c1b openvidu install script udated 2020-05-06 13:00:06 +02:00
OscarSotoSanchez 32d92c8eea intall_openvidu.sh upgrade 2020-05-06 12:48:53 +02:00
OscarSotoSanchez 1e44847539 upgrade-restart added 2020-05-06 11:22:48 +02:00
pabloFuente 3bebe99ee5 Docker build: single discover_my_public_ip.sh script 2020-05-05 18:30:38 +02:00
OscarSotoSanchez b5e1ce6b1f openvidu and openvidu pro entrypoint updated 2020-05-05 18:20:41 +02:00
OscarSotoSanchez 00ff6969b1 upgrade openvidu added into script 2020-05-05 18:01:08 +02:00
OscarSotoSanchez 2f571467dd wait for media nodes added to the entrypoint 2020-05-05 11:52:00 +02:00
pabloFuente add3ee5603 openvidu-server: recording size in bytes from int to long (NumberFormatException) 2020-05-04 22:15:11 +02:00
csantosm 3b13177643 openvidu-browser: Added custom logger. Fixes #440 2020-05-04 20:02:43 +02:00
pabloFuente ae5087e373 openvidu-server: allow deprecated OPENVIDU_DOMAIN_OR_PUBLIC_IP 2020-05-04 19:15:00 +02:00
Pablo Fuente Pérez 98957f4bb6
Update bug_report.md 2020-05-04 18:37:22 +02:00
pabloFuente 221e4efc68 OPENVIDU_HTTPS_PORT to HTTPS_PORT 2020-05-04 18:02:10 +02:00
pabloFuente 817110b7f7 DOMAIN_OR_PUBLIC_IP readme updated 2020-05-04 17:50:48 +02:00
pabloFuente 619e2870a6 OPENVIDU_DOMAIN_OR_PUBLIC_IP to DOMAIN_OR_PUBLIC_IP 2020-05-04 17:10:11 +02:00
OscarSotoSanchez 1df8c83db8 entrypoint proxy updated 2020-05-04 14:24:24 +02:00
OscarSotoSanchez dfda7b2a86 openvidu proxy updated 2020-05-04 13:35:21 +02:00
pabloFuente 7234c30c09 openvidu-browser: constraints from CustomMediaStreamConstraints cannot be undefined 2020-05-04 12:49:20 +02:00
Pablo Fuente Pérez f881a9819c
Merge pull request #457 from robymus/browser_videoSourceProperty
Fix handling of audioSource and videoSource (as videoTrack/audioTrack) in initPublisher
2020-05-04 12:42:19 +02:00
Robert Elek 06782db4f9 Merge remote-tracking branch 'origin/browser_videoSourceProperty' into browser_videoSourceProperty 2020-05-04 16:57:52 +07:00
Robert Elek 1f3ec39bcf openvidu-browser: MediaStreamTrack videoSource property in Publisher 2020-05-04 16:55:32 +07:00
pabloFuente db78b752ef openvidu-test-e2e: fix restaApiTest expected JSON object 2020-05-04 11:48:20 +02:00
pabloFuente e2e181d7d7 openvidu-server: removed KMS_URIS from CE GET /config (is a PRO prop now) 2020-05-03 19:49:12 +02:00
csantosm e549d772e7 openvidu-browser: Fixed comment typo 2020-05-03 17:19:51 +02:00
pabloFuente 1eb2d4ffe5 openvidu-server: application.properties comply with deafult config values 2020-05-03 14:27:00 +02:00
csantosm c2ca2181fa openvidu-browser: supported Samsung Internet Browser 2020-05-01 00:18:16 +02:00
pabloFuente aa914ca5d6 openvidu-server: OPENVIDU_PUBLICURL to DOMAIN_OR_PUBLIC_IP and HTTPS_PORT 2020-04-30 21:47:24 +02:00
OscarSotoSanchez cd2f472034 proxy ip restrictions added 2020-04-30 14:27:40 +02:00
pabloFuente a922b95d95 openvidu-server: add IceCandidates only after webEndpoint is available 2020-04-30 14:01:55 +02:00
OscarSotoSanchez bd262257f0 allowed access proxy added 2020-04-30 11:02:50 +02:00
pabloFuente f4155292d5 openvidu-server: HTTPS_PORT check and appended to public URL 2020-04-29 17:37:54 +02:00
Robert Elek ca1edc114e openvidu-browser: MediaStreamTrack videoSource property in Publisher 2020-04-29 19:20:35 +07:00
OscarSotoSanchez 2976ecc443 http_port and https_port changed 2020-04-29 11:12:10 +02:00
OscarSotoSanchez 27ef88f70c apache2-utils in proxy image added 2020-04-29 10:25:18 +02:00
OscarSotoSanchez 5c155bf7fc .env changed 2020-04-29 10:24:38 +02:00
pabloFuente a144d27b7b openvidu-server dashboard: port fixed to 443 removed 2020-04-28 17:39:48 +02:00
OscarSotoSanchez 0fce47082f docker-compose updated 2020-04-28 16:36:45 +02:00
OscarSotoSanchez b26d5e5f1a name vars changed 2020-04-28 16:29:12 +02:00
OscarSotoSanchez f3bc2a5d3e Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-28 15:54:00 +02:00
OscarSotoSanchez f1a684c615 openvidu proxy updated 2020-04-28 15:53:56 +02:00
Micael Gallego c77c7fcf67
Merge pull request #447 from rafaelrenanpacheco/patch-1
Suggest timezone configuration as JAVA_OPTIONS
2020-04-27 00:37:58 +02:00
pabloFuente b2e28a81cf openvidu-browser: fix 'on' and 'once' event methods memory leak 2020-04-26 22:22:39 +02:00
Rafael Renan Pacheco 5e265a6a44
Suggest timezone configuration as JAVA_OPTIONS
Before 2.13 we deployed OpenVidu's .jar directly on the host, which means it would use the host timezone, which usually is the desired one. As of 2.13 OpenVidu's .jar is now in a docker image, which uses it's own timezone (default to UTC). If the .env have a default timezone property, it will make clear to the user that the jar will run using that specific timezone, forcing it to change to the desired value. Otherwise it will run using the container's default timezone, and the user may take some time to realize the OpenVidu server is running on a different timezone. This doesn't affect timestamps, but affects the OpenVidu Server logs, which may cause problems when using a log aggregator based on the log date and time.
2020-04-24 19:44:26 -03:00
OscarSotoSanchez f73c682903 check version docker-compose in install script 2020-04-24 12:47:24 +02:00
jenkinsopenvidu 797732f244 Update to version v2.13.0 2020-04-23 10:43:37 +00:00
pabloFuente 5da8ec079f beta tag removed from docker-compose image versions 2020-04-23 12:26:43 +02:00
pabloFuente 8941f9025a openvidu-browser: uglify-js to terser (supports ES6) 2020-04-23 11:38:35 +02:00
pabloFuente 48aa2a0faa Updated Dockerfiles to KMS 6.13.1 2020-04-22 17:18:29 +02:00
openvidu e9b12195e9 Update openvidu-java-client to version v2.13.0 2020-04-22 15:15:00 +00:00
jenkinsopenvidu 44a97000a4 Update openvidu-node-client to version v2.13.0 2020-04-22 15:03:52 +00:00
pabloFuente da26ffe5ba openvidu-server: dotenv real path getter improved 2020-04-22 15:25:08 +02:00
pabloFuente b17f2988b0 openvidu-server: read .env file on startup 2020-04-22 14:33:58 +02:00
pabloFuente 3891bb26d8 "OpenVidu Server Webhook" to "OpenVidu Webhook" 2020-04-21 20:14:02 +02:00
pabloFuente d42d9667f3 openvidu-server-params to openvidu-config 2020-04-21 19:47:21 +02:00
Fabrizio Ruggeri 20b638d245 Set audioActive and videoActive for subscriber
Have those values behaving as for publihser
2020-04-21 16:50:55 +02:00
pabloFuente 05ff3d8f55 Readme updated to default OPENVIDU_RECORDING=false 2020-04-21 13:55:45 +02:00
pabloFuente 68242da78f discover_my_public_ip.sh quotes fix 2020-04-21 13:49:24 +02:00
OscarSotoSanchez bee2ad0de6 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-21 13:44:53 +02:00
OscarSotoSanchez 644e004fc0 docker-compose updated 2020-04-21 13:44:49 +02:00
pabloFuente c2198b5d01 discover_my_public_ip.sh ShellCheck fixes 2020-04-21 13:42:06 +02:00
pabloFuente f2f12ac0d1 discover_my_public_ip.sh updated with new URLs 2020-04-21 13:37:36 +02:00
Pablo Fuente Pérez cc5b6f2892
Update discover_my_public_ip.sh 2020-04-21 13:23:01 +02:00
Pablo Fuente Pérez d3bdd85c6e
Update discover_my_public_ip.sh 2020-04-21 13:22:34 +02:00
Pablo Fuente Pérez 30877828f9
Update discover_my_public_ip.sh 2020-04-21 13:20:46 +02:00
OscarSotoSanchez 0902dcd7a0 services discover ip updated 2020-04-21 13:15:46 +02:00
OscarSotoSanchez a31f8a975b discover_my_public_ip script added 2020-04-21 13:00:46 +02:00
OscarSotoSanchez fb4c4add88 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-21 10:55:59 +02:00
OscarSotoSanchez e58e4ad3ff changed recording config in .env file 2020-04-21 10:55:56 +02:00
pabloFuente 1ffa632d41 openvidu-server: extended onIceCandidate log 2020-04-20 18:50:48 +02:00
OscarSotoSanchez 9efeb6c7a6 recording fixed 2020-04-20 18:45:56 +02:00
pabloFuente 4d2f812da9 openvidu-server: print onIceCandidate RPC parameters 2020-04-20 18:41:50 +02:00
pabloFuente e9716a24c7 openvidu-server: removed OPENVIDU_RECORDING_COMPOSED_URL from docker-compose.yml 2020-04-20 15:10:45 +02:00
pabloFuente 2c4d7814a3 SDKs: removed broken hash link from docs 2020-04-20 14:45:52 +02:00
pabloFuente 7f1fd28438 openvidu-server: generic frontend resource handler (usable for CE and PRO) 2020-04-20 14:25:59 +02:00
pabloFuente 7ba1b2bb12 openvidu-server: UTF-8 charset to CDR logger to comply with JSONLines 2020-04-19 20:39:07 +02:00
pabloFuente 5784b38e7c openvidu-server: default OPENVIDU_CDR_PATH to /opt/openvidu/cdr 2020-04-19 00:56:07 +02:00
pabloFuente def606a29b openvidu-server: CORS configuration updated 2020-04-18 22:10:27 +02:00
pabloFuente c97f24f7ed openvidu-server: 404.html 2020-04-18 20:09:15 +02:00
pabloFuente 9a1fe432c2 openvidu-server: white lines clean up 2020-04-18 19:31:04 +02:00
pabloFuente cb9fd54940 openvidu-server: added asWritableFileSystemPath to OpenViduConfig 2020-04-18 19:29:44 +02:00
pabloFuente 1401952c06 openvidu-server: CDR default containing folder from "log" to "cdr" 2020-04-18 19:05:52 +02:00
pabloFuente 41fcca0b5c openvidu-test-e2e: fixed restaApiTest 2020-04-18 15:37:27 +02:00
pabloFuente 9dbce15758 openvidu-server: by default append /inspector to recording composed url 2020-04-18 15:27:03 +02:00
pabloFuente 52219c8d54 openvidu-test-e2e: fixed tests 2020-04-17 22:31:35 +02:00
pabloFuente c5037ae78d Jenkisnfile updated 2020-04-17 22:02:56 +02:00
pabloFuente 7bda963b82 openvidu-server: GET /config updated to new syntax 2020-04-17 21:18:18 +02:00
OscarSotoSanchez 201495266f Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-17 19:20:48 +02:00
OscarSotoSanchez 77192f2d6a folder kms crashes updated 2020-04-17 19:20:44 +02:00
pabloFuente ea4a6bbed3 openvidu-server: SERVER_PORT fix 2020-04-17 19:15:34 +02:00
pabloFuente 3dd048b318 NEW SYNTAX FOR CONFIGURATION PROPERTIES 2020-04-17 18:45:46 +02:00
OscarSotoSanchez b7a36700f9 openvidu docker file updated 2020-04-17 16:16:16 +02:00
OscarSotoSanchez de4af3ccd9 docker-compose CE running 2020-04-17 14:08:47 +02:00
OscarSotoSanchez f0e02b88d8 dacker-compose updated 2020-04-17 13:36:36 +02:00
pabloFuente 0b26883eb1 openvidu-server: main index.html at "/" 2020-04-17 13:08:38 +02:00
OscarSotoSanchez d078a322b8 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-17 10:27:58 +02:00
OscarSotoSanchez 89f542c4ef Fixed openvidu image 2020-04-17 10:27:31 +02:00
pabloFuente 59909b533f openvidu-server dashboard: "ng build" use local node_modules 2020-04-16 19:56:52 +02:00
pabloFuente bd6cb6b3da openvidu-server: serve Dashboard at "/dashboard" instead of "/" 2020-04-16 19:37:56 +02:00
pabloFuente 27a9e3ef7d openvidu-server: SecurityConfig updated 2020-04-16 19:35:24 +02:00
pabloFuente 7f1c6e57bf openvidu-server dashboard package-json updated 2020-04-16 19:31:08 +02:00
OscarSotoSanchez 267b5037e4 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-16 16:28:03 +02:00
OscarSotoSanchez 8f491632a0 images updated 2020-04-16 16:27:59 +02:00
pabloFuente 27bc1b9f3a openvidu-server: controller security simplified 2020-04-16 13:49:38 +02:00
pabloFuente 40eda8e1ac openvidu-server: CertificateRestController refactoring 2020-04-16 13:34:22 +02:00
pabloFuente 92d0c1bdba openvidu-server: change isCoturnAvailable for OpenviduConfig#isTurnAdminAvailable 2020-04-16 13:31:49 +02:00
OscarSotoSanchez 90e3eddfc3 Fixed the docker-compose restart 2020-04-16 11:53:32 +02:00
OscarSotoSanchez 2ed403cae5 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-16 10:41:36 +02:00
OscarSotoSanchez d8e90684c6 Vars in .env file updated 2020-04-16 10:41:32 +02:00
pabloFuente 5ce57dcc7e openvidu-server: optional IPv4 or IPv6 2020-04-15 19:33:10 +02:00
pabloFuente 0d426feb22 openvidu-server: configure stun server for each MediaEndpoint 2020-04-15 19:32:29 +02:00
OscarSotoSanchez 079fd9de04 Image openvidu pro parameterized in bash script 2020-04-15 13:48:36 +02:00
OscarSotoSanchez c54874b925 readme updated 2020-04-15 13:46:58 +02:00
OscarSotoSanchez 67b4ff9da1 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-15 13:42:25 +02:00
OscarSotoSanchez 82ceac9f8e Mount core dumps folder in docker-compose 2020-04-15 13:41:50 +02:00
pabloFuente ffe0b49a38 openvidu-java-client: add default serial ID to OpenViduException 2020-04-15 11:31:34 +02:00
Pablo Fuente Pérez 0556033cc6
Merge pull request #431 from rafaelrenanpacheco/common-exception
Add generic OpenViduException
2020-04-15 11:28:39 +02:00
Pablo Fuente Pérez f299c9a77b
Update pom.xml 2020-04-15 11:04:59 +02:00
Rafael Renan Pacheco 2fe2cbf9c4 Add generic OpenVidu exception 2020-04-14 16:38:24 -03:00
pabloFuente 74e7943e26 openvidu-server: ParticipantSummary protection against lack of participantLeft event 2020-04-14 21:33:17 +02:00
pabloFuente 4c50f84b7d openvidu-server: get remote SDP of MediaEndpoint inside try-catch 2020-04-14 21:30:21 +02:00
pabloFuente 60a414c791 Docker owncert files location updated 2020-04-14 14:27:36 +02:00
pabloFuente c6dc889e4d Typo fixed 2020-04-14 14:21:18 +02:00
pabloFuente 46b8ebb1ea Docker config files unnecessary new line removed 2020-04-14 14:05:01 +02:00
pabloFuente c017d47440 openvidu.io/docs/ to docs.openvidu.io/en/stable/ 2020-04-14 13:35:50 +02:00
OscarSotoSanchez 3c05d6c026 Restart always kms 2020-04-13 14:29:50 +02:00
OscarSotoSanchez eaec3033e6 Added java options in docker 2020-04-13 14:19:38 +02:00
OscarSotoSanchez 9f4bfa08d1 Tag script 2020-04-13 12:35:58 +02:00
pabloFuente b011845292 openvidu-test-browsers: CustomWebhook log event 2020-04-11 14:36:10 +02:00
pabloFuente 963a9d6b40 openvidu-test-browsers: CustomWebhook councurrent bug fix 2020-04-11 14:34:56 +02:00
pabloFuente 675de73351 Updated META-INF and dotenv.path property position 2020-04-11 01:49:54 +02:00
micaelgallego 69f28ce7a4 Fix install_openvidu.sh 2020-04-11 01:06:02 +02:00
Micael Gallego 7cf4892022
Update openvidu-call image in docker-compose 2020-04-11 01:03:39 +02:00
micaelgallego d3bc1dd8ec Fix install_openvidu.sh 2020-04-10 15:29:51 +02:00
micaelgallego e2df4aa3f3 Add 22 port to install procedure 2020-04-10 02:27:00 +02:00
micaelgallego 124ca24a68 Add reserved URLs to doc 2020-04-10 01:48:26 +02:00
micaelgallego 8c44f0c34e Updated install procedure and doc 2020-04-10 01:41:33 +02:00
pabloFuente f587511248 Jenkinsfile updated (unit and integration tests apart) 2020-04-09 20:04:29 +02:00
pabloFuente a08d92e745 openvidu-server: new Session lock protecting joinRoom/leaveRoom methods 2020-04-09 19:42:45 +02:00
pabloFuente 8ab37ab97d oepnvidu-server: alway set disconnection time on KurentoClientListener 2020-04-09 18:34:37 +02:00
OscarSotoSanchez 151344ce59 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-09 17:34:48 +02:00
OscarSotoSanchez c754b634e6 Fixed custom layout 2020-04-09 17:34:44 +02:00
micaelgallego 5f3902d973 Avoid reconnection check when KurentoClient explicitly closed 2020-04-09 17:15:38 +02:00
micaelgallego 8c1703aa54 Add dotenv path to allow updating file when restart 2020-04-09 17:14:37 +02:00
OscarSotoSanchez 0a36927836 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-09 16:35:06 +02:00
OscarSotoSanchez 384ee3e85e Updated openvidu pro image 2020-04-09 16:35:02 +02:00
OscarSotoSanchez 8af910f1fd Updated proxy image 2020-04-09 16:33:26 +02:00
pabloFuente 7636d8a516 openvidu-server: Session closingLock from .lock() to .tryLock() 2020-04-09 13:20:29 +02:00
micaelgallego cd1aad4eff Allow new config values verification for restarting 2020-04-09 12:21:46 +02:00
pabloFuente 4cd877069b openvidu-test-e2e: print analysed recording frame 2020-04-08 21:55:24 +02:00
pabloFuente a639fcbbc3 openvidu-server: white lines clear up 2020-04-08 18:57:09 +02:00
OscarSotoSanchez 2675077093 Updated install script and readme 2020-04-08 18:30:30 +02:00
OscarSotoSanchez 49ff61d059 Update install script 2020-04-08 16:47:54 +02:00
OscarSotoSanchez cb1037c0a7 Added install command in readme 2020-04-08 16:09:09 +02:00
OscarSotoSanchez eeca207273 Update install docker-compose script 2020-04-08 15:51:20 +02:00
OscarSotoSanchez 2bf9a6b493 Merge branch 'master' of github.com:OpenVidu/openvidu 2020-04-08 15:47:29 +02:00
OscarSotoSanchez 0ee2a2926f .env conf modified and added install script 2020-04-08 15:47:25 +02:00
pabloFuente 4a77cb2650 openvidu-server: concurrent protection at PublisherEndpoint level for methods KurentoParticipant#cancelReceivingMedia, KurentoParticipant#releasePublisherEndpoint, KurentoParticipant#receiveMediaFrom 2020-04-08 15:38:07 +02:00
micaelgallego 0d2fcfbff7 Prepare for updating .env config file in PRO 2020-04-08 03:20:08 +02:00
micaelgallego b2d9c96f24 Update docker-compose help to point to master 2020-04-07 23:04:59 +02:00
micaelgallego f7fb2cc891 Revert to beta3 version 2020-04-07 23:03:21 +02:00
OscarSotoSanchez c2bcb0db2c update docker openvidu-pro 2020-04-07 17:17:15 +02:00
OscarSotoSanchez 52b8fb328e Openvidu pro docker 2020-04-07 17:17:08 +02:00
pabloFuente 169e313b8c openvidu-server: beautify some empty lines 2020-04-07 15:26:28 +02:00
micaelgallego bc2ced6220 Merge remote-tracking branch 'origin/HEAD' into deploy-docker-compose 2020-04-07 03:54:19 +02:00
pabloFuente e36772476e openvidu-test-e2e: move recording duration check 2020-04-06 20:39:13 +02:00
pabloFuente 86cd0fe62f E2e Jenkinsfile fetch git origin 2020-04-06 18:29:52 +02:00
pabloFuente c49713dfdb openvidu-server: change getStats strategy 2020-04-06 18:07:36 +02:00
micaelgallego 5dfe8ff601 Update config properties management to support OpenViduPro 2020-04-06 18:00:48 +02:00
pabloFuente daec96f465 openvidu-server: change getStats strategy 2020-04-06 17:33:50 +02:00
OscarSotoSanchez 92464bc25c Juan's changes 2020-04-06 13:31:56 +02:00
micaelgallego 009bb2e0f3 Update visibility in OpenViduConfig method 2020-04-06 13:30:31 +02:00
micaelgallego 4e73ecc577 Rename OpenViduBuildConfig to OpenViduBuildInfo 2020-04-06 04:02:11 +02:00
micaelgallego 69e75b9b1a Merge remote-tracking branch 'origin/master' into deploy-docker-compose 2020-04-06 03:56:35 +02:00
pabloFuente ce90918274 openvidu-java-client: JavaDoc absolute links 2020-04-05 22:05:17 +02:00
pabloFuente 9aee3eaf44 openvidu-browser and openvidu-node-client generate-docs.sh 2020-04-05 21:34:10 +02:00
pabloFuente b182b8b30e openvidu-java-client: JavaDoc rest of links fixed 2020-04-05 20:58:02 +02:00
pabloFuente ae92f7d06b openvidu-java-client: JavaDoc script extended (versioned links) 2020-04-05 20:49:27 +02:00
pabloFuente d838518ae3 Documentation links to /en/stable/ 2020-04-05 20:03:46 +02:00
pabloFuente 7e282b239b openvidu-node-client: dependencies updated 2020-04-05 20:01:56 +02:00
pabloFuente a57defe69a Updated library documentations to support new docs.openvidu.io 2020-04-03 18:26:27 +02:00
OscarSotoSanchez 8e4e3eb45a Fixed url error 2020-04-03 16:01:07 +02:00
pabloFuente eb87f3c9a2 openvidu-server: fix for the lack of reconnected KurentoClientListener event 2020-04-02 13:19:05 +02:00
pabloFuente 31dd5d6db9 openvidu-test-e2e: fix kurentoReconnectTest alert message 2020-04-02 12:36:44 +02:00
OscarSotoSanchez a0d9d65702 Added htpasswd command in proxy imagen, update com 2020-04-02 11:30:20 +02:00
pabloFuente 96440b9f26 openvidu-server: filter non connected KMSs when getting less loaded 2020-04-02 01:49:51 +02:00
pabloFuente aecb0095b3 openvidu-server: selectAndRemoveKmsLock tryLock fixed 2020-04-01 19:37:45 +02:00
pabloFuente e647b286c6 openvidu-server: selectAndRemoveKmsLock lock() to tryLock() 2020-04-01 18:35:14 +02:00
pabloFuente 9dcd8d73ae openvidu-browser: Publiser.replaceTrack may be used without publishing to Session 2020-04-01 17:48:22 +02:00
pabloFuente 8eb4ce6610 openvidu-server: store Runnable for KMS getStats thread 2020-04-01 14:58:26 +02:00
pabloFuente 10cb00ed10 openvidu-server: CallDetailRecord logger 2020-03-31 19:56:21 +02:00
pabloFuente 6518166c0b openvidu-server: joinRoom try-finally extended 2020-03-31 19:52:07 +02:00
micaelgallego 45f5b7645f Improve docker-compose doc 2020-03-30 18:59:03 +02:00
micaelgallego 0f1f85c59e Update docker-compose doc 2020-03-30 18:56:23 +02:00
micaelgallego 1162ccc3c7 Fix typo in docker-compose 2020-03-30 18:56:05 +02:00
micaelgallego 6b7ff94537 Add warning in docker-compose.yml 2020-03-30 18:55:06 +02:00
pabloFuente 3e02a1b31f openvidu-server: typo fixed 2020-03-30 13:32:53 +02:00
micaelgallego 63c385aab2 Add more information in docker-compose readme 2020-03-30 02:34:27 +02:00
micaelgallego 30ceb1681e Improve properties validation in openvidu-server 2020-03-30 02:33:36 +02:00
micaelgallego 90c84eb41a Add OpenVidu restart script 2020-03-30 02:27:50 +02:00
pabloFuente 19a7c778da openvidu-server: MediaEndpoint AtomicInteger for stats not found error 2020-03-30 01:32:59 +02:00
pabloFuente 60fca4021c openvidu-server: fix typo 2020-03-29 21:24:16 +02:00
pabloFuente c43f211dd1 openvidu-server: SessionManager concurrency fix for session not active. Catch onSessionClosed event exceptions 2020-03-29 21:22:41 +02:00
micaelgallego bcea9e9af6 Update ov-server image to beta2 2020-03-29 12:03:24 +02:00
micaelgallego 20492c2b23 Update readme.md 2020-03-29 05:17:33 +02:00
micaelgallego 08f6d6a5e0 typo in readme.md 2020-03-29 05:12:22 +02:00
micaelgallego 19ac689e9c Show error when domain/ip or secret are not set 2020-03-29 05:10:50 +02:00
micaelgallego 19e76d05da Rename docker-compose services 2020-03-29 01:10:10 +01:00
micaelgallego 35e4bf0eb7 Improve OpenVidu started message 2020-03-29 01:09:27 +01:00
micaelgallego edf1c70cf3 Improve openvidu-server docker img creation 2020-03-29 01:09:12 +01:00
Micael Gallego 7a0288fa9c
Update format in docker-compose instructions 2020-03-28 20:42:58 +01:00
Micael Gallego 8d10ea162e
Update docker-compose instructions 2020-03-28 20:41:22 +01:00
pabloFuente c4d2edf66e openvidu-browser: dependencies update 2020-03-28 12:23:06 +01:00
pabloFuente 3e5853227b openvidu-browser: fixes for Publishers subscribed to remote 2020-03-28 12:22:05 +01:00
pabloFuente c111ed20af openvidu-server: garbage collector for non active sessions 2020-03-27 20:55:25 +01:00
OscarSotoSanchez 00909e3045 Update readme 2020-03-27 16:48:05 +01:00
OscarSotoSanchez e133c65c32 Update readme 2020-03-27 16:46:32 +01:00
pabloFuente a7d2232377 openvidu-server: CDREventEnd toJson "reason" simplified 2020-03-27 16:36:45 +01:00
OscarSotoSanchez 45c75a54c1 Changes in documentation 2020-03-27 16:09:32 +01:00
pabloFuente 2e0a963128 openvidu-server: logger of KurentoSession init with KurentoSession (no Session) 2020-03-27 15:19:51 +01:00
OscarSotoSanchez 86ffec9bfe Show public ip entrypoint coturn 2020-03-27 14:52:36 +01:00
OscarSotoSanchez 4db62f9727 Change kms ports 2020-03-27 13:21:26 +01:00
OscarSotoSanchez 29fcbd7386 Control exist certificated in openvidu-proxy 2020-03-27 12:53:04 +01:00
OscarSotoSanchez 532d3ba2a7 Update docker-compose 2020-03-26 17:37:51 +01:00
OscarSotoSanchez e527d8c6da Change Dashboard URL 2020-03-26 17:09:50 +01:00
pabloFuente bac27700c0 READMEs updated to point to releases page 2020-03-26 16:51:49 +01:00
OscarSotoSanchez ffeb867109 Update readme 2020-03-26 16:24:09 +01:00
OscarSotoSanchez 974d87ea5c Update docker-compose 2020-03-26 15:11:08 +01:00
OscarSotoSanchez f744056575 Update openvidu-server conf 2020-03-26 12:43:04 +01:00
pabloFuente cb382d66b2 openvidu-test deleted 2020-03-25 18:18:23 +01:00
OscarSotoSanchez 693e4978f9 Update nginx confs 2020-03-25 17:30:41 +01:00
OscarSotoSanchez 8cfd8904e7 Update openvidu docker image for use coturn 2020-03-25 13:02:26 +01:00
OscarSotoSanchez fec3dff148 Removed not used selft certificateds 2020-03-25 12:43:30 +01:00
OscarSotoSanchez e5833cbba8 Added letsencrypt and minor changes in compose 2020-03-25 12:42:26 +01:00
OscarSotoSanchez b4522cb9e5 fixed openvidu conf 2020-03-24 17:26:55 +01:00
OscarSotoSanchez 6931c08867 Add openvidu-nginx image 2020-03-24 17:18:37 +01:00
OscarSotoSanchez 5202501e0d Change nginx confs 2020-03-24 12:32:48 +01:00
OscarSotoSanchez 73e542b42a Add docker-compose and corturn image 2020-03-24 12:08:36 +01:00
pabloFuente 68dfd4414a Library doc links to docs.openvidu.io 2020-03-21 23:54:18 +01:00
pabloFuente 30d76c5a90 Documentation badge updated 2020-03-21 23:39:53 +01:00
pabloFuente 8ed350a539 Documentation badge updated 2020-03-21 23:38:35 +01:00
pabloFuente dcfa5f9268 Librariy documentation scripts output to openvidu.io-docs 2020-03-21 23:30:14 +01:00
openvidu 9c0cab5f4f Update openvidu-java-client to version v2.12.1 2020-03-16 16:51:26 +00:00
pabloFuente 25c9534cdb openvidu-java-client: fix JsonParser unknown exception 2020-03-16 15:20:13 +01:00
Micael Gallego 1ba43947d9
Create ROADMAP.md 2020-03-16 10:22:41 +01:00
pabloFuente 4a90f38b37 openvidu-server: thymeleaf update 2020-03-15 20:32:02 +01:00
jenkinsopenvidu 88cf512a97 Update to version v2.12.0 2020-03-12 17:21:52 +00:00
openvidu 14f4d3144e Update openvidu-java-client to version v2.12.0 2020-03-12 15:38:27 +00:00
jenkinsopenvidu 20d5c39ebf Update openvidu-node-client to version v2.12.0 2020-03-12 15:26:15 +00:00
pabloFuente 006586efc4 Dockerfile to KMS 6.13.0 2020-03-12 14:37:43 +01:00
pabloFuente 7ea92b74fd kurento-java to 6.13.1 2020-03-11 11:56:27 +01:00
pabloFuente 4973e97551 openvidu-test: remove and ignore .factorypath file 2020-03-04 11:16:44 +01:00
cruizba 9350312722 openvidu-server: Revert coturn.redis.ip to localhost 2020-03-04 10:21:47 +01:00
cruizba 444d302590 openvidu-server: Restored pom.xml 2020-03-03 15:42:49 +01:00
cruizba 1f909b33c6 openvidu-server: Removed coturn.ip default parameter in application.properties 2020-03-03 14:47:29 +01:00
cruizba d82b79cc1d Use kurento snapshot temporarily 2020-03-03 12:20:53 +01:00
pabloFuente 3e6ff0cc98 openvidu-server: removed unused externalizedProperties attr from OpenviduConfig 2020-02-23 20:05:02 +01:00
pabloFuente f3d2916656 openvidu-server: exlcude netty dependencies from docker-java (why failed all of a sudden??) 2020-02-23 12:24:50 +01:00
pabloFuente b44323c96c openvidu-browser: better Events dispatched typedocs 2020-02-23 12:05:05 +01:00
pabloFuente f287828295 openvidu-server: logback configuration updated 2020-02-21 12:55:03 +01:00
pabloFuente 947435f5c1 openvidu-server: logback colors updated 2020-02-21 12:08:48 +01:00
pabloFuente 57b55bba85 openvidu-testapp: initGrayVideo refactoring 2020-02-21 12:07:53 +01:00
pabloFuente df4db147f5 openvidu-browser: OpenVidu.getUserMedia fix. generateMediaConstraints refactoring 2020-02-20 20:14:46 +01:00
pabloFuente 26750e6167 openvidu-test-e2e: ip camera test extended with individual recording 2020-02-20 09:49:41 +01:00
pabloFuente fea2cf8b03 openvidu-test-e2e: fix ipCameraTest 2020-02-19 19:29:56 +01:00
pabloFuente 2741605b78 openvidu-server: do not allow client forceUnpublish over IPCAM streams 2020-02-19 16:30:14 +01:00
pabloFuente e6dcb7941e openvidu-server: "type" parameter on publishing IP cameras fixed to "IPCAM" 2020-02-19 14:53:43 +01:00
pabloFuente f35e380f97 openvidu-browser: better docs for events 2020-02-19 12:09:46 +01:00
pabloFuente f23383008c openvidu-server: remove city from Geolocation if null 2020-02-19 11:38:19 +01:00
pabloFuente 69ab47edc8 openvidu-browser: updated package.json. forceMediaReconnectionAfterNetworkDrop 2020-02-19 09:35:10 +01:00
pabloFuente d0c851d0b1 openvidu-browser: default tag in browserify commands of package.json 2020-02-18 19:06:08 +01:00
pabloFuente 5b40b7d5e1 openvidu-testapp: reconnecting and reconnected Session events 2020-02-17 22:00:51 +01:00
pabloFuente aee989c7d5 openvidu-test-e2e: updated Jenkinsfiles (KMS 6.13.0 and Node 12) 2020-02-17 16:23:47 +01:00
pabloFuente 2be5be6ed4 openvidu-server: better log on ice candidate error (show candidate) 2020-02-17 12:41:37 +01:00
pabloFuente dc8a0449b9 openvidu-server: logging refactoring 2020-02-16 16:27:29 +01:00
pabloFuente 1713d79b4a openvidu-server: MediaEndpoint fix 2020-02-14 23:03:37 +01:00
pabloFuente ac2f46ac2d openvidu-server: ProtocolElements for reconnectStream RPC method 2020-02-14 22:33:43 +01:00
pabloFuente 13e3b52ff6 openvidu-server: RPC reconnect method 2020-02-14 22:32:57 +01:00
pabloFuente 46f0ad564e openvidu-browser: better logging when reconnecting media streams 2020-02-14 21:54:23 +01:00
pabloFuente 4ae63984a2 openvidu-browser: media reconnections support 2020-02-14 20:51:52 +01:00
pabloFuente 8fc8834d25 openvidu-server: info headers to some classes 2020-02-14 12:03:00 +01:00
pabloFuente ec29127778 Dashboard: last Angular 9 updates 2020-02-07 20:15:59 +01:00
pabloFuente 63d056c762 Dashboard: update to Angular 9 2020-02-07 20:07:40 +01:00
pabloFuente 500b6cd006 Package.json updated 2020-02-07 20:06:18 +01:00
pabloFuente 59ba35343e Dashboard: updated package.json 2020-02-07 20:04:13 +01:00
pabloFuente 0496305372 Update angular/flex-layout 2020-02-07 20:00:31 +01:00
pabloFuente e2a2c1cbd6 Dashboard: update to Angular 9 2020-02-07 19:58:50 +01:00
pabloFuente e666b90360 Dashboard: remove HttpModule 2020-02-07 19:55:22 +01:00
pabloFuente 42fc61c53b Updated zone.js 2020-02-07 19:44:18 +01:00
pabloFuente 4424fa5d6c Updated package-lock.json 2020-02-07 19:42:46 +01:00
pabloFuente 01b76d1892 openvidu-server: ignore tomcat from KurentoJsonRpcServer. Allow - and _ in customSessionId 2020-02-04 14:01:02 +01:00
pabloFuente 8fe3605aeb Copyright update from 2019 to 2020 2020-02-04 11:25:54 +01:00
pabloFuente e04354ede9 openvidu-server: remove all deprecated "new JsonParser()" in favor of static method 2020-02-04 11:18:22 +01:00
pabloFuente c2da80429e openvidu-server: check param customSessionId (alphanumeric string) 2020-02-04 11:11:15 +01:00
pabloFuente 189c6264c2 openvidu-test-browsers: JsonParser static method in CustomWebhook 2020-02-02 20:37:28 +01:00
pabloFuente 3e9eef2d27 openvidu-server: clean activeRecorders map of SingleStreamRecordingService 2020-02-02 20:34:11 +01:00
pabloFuente fac8693e2f openvidu-server: SingleStreamRecordingService connect endpoint after storing in map 2020-02-02 00:42:33 +01:00
pabloFuente c8ca6b3805 Remove JSONObject/JSONArray from E2ETest 2020-02-01 13:41:43 +01:00
pabloFuente 57440660b8 POM dependencies clean-uo and udpate. GSON everywhere. 2020-02-01 13:17:31 +01:00
pabloFuente 35d8490180 openvidu-server: token management refactoring 2020-01-31 14:59:46 +01:00
pabloFuente e663680b48 openvidu-server: change order of session store and removal from maps 2020-01-31 12:46:18 +01:00
pabloFuente c2af1aab01 POM dependencies updated in openvidu-parent and openvidu-server 2020-01-31 11:54:16 +01:00
pabloFuente 2f397c42c0 openvidu-server: fix receiveVideoFrom IPCAM 2020-01-29 19:11:06 +01:00
pabloFuente 78deea7f3b openvidu-server: IdentifierPrefixes enumeration 2020-01-29 18:19:13 +01:00
pabloFuente 1f139b8211 openvidu-server: IPCAM participants id format changed 2020-01-29 18:01:53 +01:00
pabloFuente 8084acefcd openvidu-server: remove getShortSessionId from RecordingService (useless) 2020-01-29 16:56:23 +01:00
pabloFuente 88e3029dda openvidu-server: fix new stream id parsing on receiveVideoFrom RPC call 2020-01-29 16:39:34 +01:00
pabloFuente 0a87de0afd openvidu-server: OpenviduConfig checks final parameters in use 2020-01-29 12:02:27 +01:00
pabloFuente 2cbdcb9251 openvidu-server: common identifiers format 2020-01-29 12:00:50 +01:00
cruizba 68e88f21db openvidu-server: Check coturn ip parameter. If no coturn ip is defined, get from publicUrl the domain name. Also, domains can be setted as coturn ip. 2020-01-27 23:56:12 +01:00
pabloFuente 13a3b6ab7d openvidu-test-e2e: more flexible check video duration method 2020-01-27 12:16:57 +01:00
cruizba adef4546ee openvidu-browser: Fix typo log coturn ip 2020-01-25 18:16:21 +01:00
cruizba bc7ee37a8d openvidu-browser: Modified Session.ts to accept in processToken the new parameter coturnIp 2020-01-25 16:53:10 +01:00
cruizba 06225b4894 openvidu-server: Added coturn.ip configuration parameter 2020-01-25 16:50:33 +01:00
pabloFuente 9ecd8bfc66 openvidu-browser: LocalRecorder default mimeType (fix Firefox > 71) 2020-01-24 18:45:32 +01:00
pabloFuente 545451211a openvidu-browser: TypeDoc typo fix 2020-01-24 14:13:30 +01:00
pabloFuente 46d6199d42 openvidu-server: Session ReadWriteLock for closing operation 2020-01-24 11:16:49 +01:00
pabloFuente 4fcb6839d0 openvidu-server: recording stop refactoring 2020-01-23 18:45:35 +01:00
pabloFuente 6c1a168aca openvidu-test-e2e: print screenshot if local record test fail 2020-01-20 11:25:06 +01:00
pabloFuente 00f2127264 openvidu-server: active recordings count in Kms 2020-01-09 11:40:03 +01:00
Pablo Fuente Pérez 0f90627f03
Merge pull request #375 from OpenVidu/cordova-new-version
Cordova new version
2020-01-08 16:18:48 +01:00
pabloFuente 724a0216c7 openvidu-test-e2e: localRecordTest sleep 2020-01-07 15:07:56 +01:00
Pablo Fuente Pérez 9bce3ca6e6
Update config.yml 2020-01-07 12:58:09 +01:00
CSantos 86f288cfe2 openvidu-browser: prepare iosrtc new version 2020-01-03 15:29:21 +01:00
pabloFuente 35fe6aa3da openvidu-test-e2e: clear filter events once listener is removed 2020-01-03 13:31:49 +01:00
pabloFuente 09cdcccd5f openvidu-node-client dependencies update 2020-01-03 11:13:07 +01:00
pabloFuente 2dba3b0aa6 Kurento 6.13.0 2019-12-18 16:33:00 +01:00
pabloFuente 48097f5f9a openvidu-server: CustomFileManager#createAndWriteFileWithFolders 2019-12-17 16:39:37 +01:00
pabloFuente 13232496c0 openvidu-test-browsers: allow PUT method on CustomHttpClient 2019-12-17 15:06:15 +01:00
pabloFuente 18d9eaf7cc openvidu-test-e2e: Jenkinsfile fix for KMS dev 2019-12-17 10:19:16 +01:00
pabloFuente d40ec2fe47 openvidu-server: LoadManager clean up 2019-12-12 12:02:32 +01:00
pabloFuente 433333e37b openvidu-test-e2e: Jenkinsfile update 2019-12-10 20:08:22 +01:00
pabloFuente 80e60f0dfd openvidu-test-e2e: Jenkinsfile deprecated archive to archiveArtifacts 2019-12-10 17:53:26 +01:00
pabloFuente 977b86563e openvidu-test-e2e: Jenkinsfile "echo" to "cat" of openvidu-server.log 2019-12-10 17:48:08 +01:00
pabloFuente 79e8b6ace1 openvidu-test-e2e: Jenkinsfile logs and archives openvidu-server output 2019-12-10 17:19:29 +01:00
pabloFuente 23fc6815b6 openvidu-test-e2e: ipCameraTest fix 2019-12-10 16:23:37 +01:00
pabloFuente acdfef3e21 openvidu-browser: StreamManager#updatePublisherSpeakingEventsOptions 2019-12-10 14:14:54 +01:00
pabloFuente 61134c5b96 openvidu-testapp: dependencies update 2019-12-05 15:31:14 +01:00
pabloFuente 78ffeca860 openvidu-browser: PublisherSpeaking and StreamVolumeChange events refactoring 2019-12-05 14:18:46 +01:00
pabloFuente c387145894 openvidu-test-e2e: removed duplicated dependency from pom.xml 2019-12-04 16:42:16 +01:00
pabloFuente 9f365fc74b openvidu-browser and openvidu-node-client dependencies update 2019-12-04 16:09:45 +01:00
pabloFuente 5c4335b6d4 openvidu-server: add ReentrantLock to KmsManager 2019-12-04 15:46:10 +01:00
pabloFuente c6adaa2688 openvidu-server: some WARN level logging to INFO level 2019-12-03 15:36:31 +01:00
pabloFuente af31713c66 openvidu-server: better logs about enabled and disabled services 2019-11-19 11:13:29 +01:00
pabloFuente 9f6f89bbad openvidu-test-e2e: Jenkinsfile webhook endpoint from localhost to 127.0.0.1 2019-11-19 10:03:04 +01:00
pabloFuente 0b0f78d34c openvidu-test-e2e: use Junit5 2019-11-17 20:06:27 +01:00
pabloFuente 34f00dff34 openvidu-parent: junit-jupiter version updated 2019-11-17 19:17:21 +01:00
pabloFuente f87b485656 openvidu-test-e2e: ipCameraTest 2019-11-15 19:26:27 +01:00
pabloFuente 4d5a023b5c openvidu-server: hidden NullPointer bug fix when closing Subscriber endpoints after KMS reconnection (associated PublisherEndpoint possibly null) 2019-11-15 16:28:12 +01:00
pabloFuente 1f7f33bd65 openvidu-test-browsers: HTTP status error print body 2019-11-15 11:45:45 +01:00
pabloFuente b6e561783a openvidu-test-browsers: print response message if HTTP status error 2019-11-15 11:30:04 +01:00
Pablo Fuente Pérez 93fd3c650b
Update bug_report.md 2019-11-11 21:07:03 +01:00
Pablo Fuente Pérez dd9f6d1b63
Update bug_report.md 2019-11-11 21:03:00 +01:00
Pablo Fuente Pérez a541af666f
Create config.yml 2019-11-11 20:59:47 +01:00
Pablo Fuente Pérez 9ff0611189
Update bug_report.md 2019-11-11 20:51:23 +01:00
Pablo Fuente Pérez d1a436fd67 Update issue templates 2019-11-11 20:48:05 +01:00
pabloFuente 5e9f9f4fe1 openvidu-browser: dependencies update 2019-11-08 09:24:16 +01:00
pabloFuente 6afda4f7d6 openvidu-node-client: support for OpenVidu URL with no port 2019-11-06 16:18:32 +01:00
pabloFuente dfa7d7539c openvidu-server: add "data" property to POST /api/sessions/ID/connection 2019-10-31 10:31:27 +01:00
pabloFuente fb74074d9e openvidu-server: fix NullPointer on KurentoParticipant#releaseSubscriberEndpoint 2019-10-30 19:34:54 +01:00
pabloFuente b41036ead3 openvidu-server: automatic stop and play of PlayerEndpoint (onlyPlayWithSubscribers) 2019-10-30 16:12:56 +01:00
pabloFuente 407b710d10 openvidu-server: allow posting an IPCAM as first participant of session 2019-10-30 11:01:07 +01:00
pabloFuente 6ac4082613 openvidu-server: allow publishing IP cameras 2019-10-30 10:25:34 +01:00
pabloFuente 91daa9aa44 openvidu-browser: filter wrong "to" elements on Session.signal 2019-10-29 11:41:03 +01:00
pabloFuente 7507569c9f openvidu-server: ignore KurentoClient connected event (use sync create method) 2019-10-25 11:45:48 +02:00
pabloFuente 00484937bd openvidu-server: KmsManager @PostConstruct abstract 2019-10-25 00:07:30 +02:00
pabloFuente 9b248756ef openvidu-server: waiting-idle-to-terminating to waiting-idle-to-terminate 2019-10-24 11:28:21 +02:00
pabloFuente 25aad0f533 openvidu-server: mediaNodeStatusChanged, launching/terminating 2019-10-24 10:46:15 +02:00
pabloFuente ba2abde8a8 openvidu-server: refactoring to allow Media Node status 2019-10-22 15:31:13 +02:00
Pablo Fuente Pérez 34cda28405
Merge pull request #331 from mserve/patch-1
Add return to avoid double-consent
2019-10-22 11:22:50 +02:00
pabloFuente 8c935142b3 openvidu-browser: removed new line char from OpenVidu.ts 2019-10-22 11:21:44 +02:00
Martin 5ed48caabc
Update openvidu-browser/src/OpenVidu/OpenVidu.ts
Remove new line char (somehow added by GitHub editor...)

Co-Authored-By: Pablo Fuente Pérez <pablofuenteperez@gmail.com>
2019-10-21 20:33:44 +02:00
pabloFuente ae071a4629 openvidu-server: filter quarantined nodes when getting less loaded one 2019-10-21 10:29:36 +02:00
pabloFuente 96c4d8bd16 openvidu-parent-pom: rollback to SpringBoot 2.1.7.RELEASE 2019-10-17 19:58:20 +02:00
pabloFuente 14f952c8a6 openvidu-parent-pom: SpringBoot to 2.1.9.RELEASE 2019-10-17 16:33:50 +02:00
pabloFuente d2e3d5697c openvidu-test-browsers: CustomWebhook prints on System.out 2019-10-17 15:06:56 +02:00
pabloFuente 54d9d704f8 openvidu-test-browsers: clear events map when calling CustomWebhook#shutDown 2019-10-15 20:43:37 +02:00
pabloFuente a8ac3efca9 openvidu-test-browsers: clear events map when calling CustomWebhook#main 2019-10-15 20:42:52 +02:00
pabloFuente 71eb8e4f3d openvidu-test-e2e: add kms.uris to restClientTest config response 2019-10-15 12:39:08 +02:00
pabloFuente a068b2fb9b openvidu-server: dashboard dependencies update 2019-10-15 11:39:59 +02:00
pabloFuente dc79f740e8 openvidu-server: GET /config sends kms.uris 2019-10-15 11:39:20 +02:00
pabloFuente 12fff2a2fb openvidu-test-browsers: allow PATCH method on CustomHttpClient 2019-10-14 17:56:06 +02:00
pabloFuente 45189f3fa8 openvidu-test-browsers: included Unzipper and MultimediaFileMetadata 2019-10-14 16:04:14 +02:00
pabloFuente 7468e4d73d openvidu-test-browsers: CustomWebhook own properties file 2019-10-14 12:10:30 +02:00
pabloFuente 7224ac8968 openvidu-server: final media-server to media-node touches 2019-10-11 13:12:16 +02:00
pabloFuente b1608d26c2 openvidu-java-client: media-server to media-node 2019-10-11 11:11:45 +02:00
pabloFuente b1e865f24c openvidu-browser/node-client: media-server to media-node 2019-10-11 11:00:43 +02:00
pabloFuente 67de82ba20 openvidu-server: media-server to media-node 2019-10-11 10:21:31 +02:00
pabloFuente 1d240d994c openvidu-parent-pom: docker-java dependency update to 3.1.5 2019-10-10 16:14:48 +02:00
pabloFuente b297636a33 openvidu-server: OpenviduConfig refactoring 2019-10-10 16:14:15 +02:00
pabloFuente 15e351127d openvidu-server: add static boolean to OpenviduConfig to avoid double initialization 2019-10-09 16:10:44 +02:00
pabloFuente f017909c4a openvidu-server: Bean initialization refactoring 2019-10-09 15:03:16 +02:00
pabloFuente aa7a2c7adf openvidu-server: better check of string array in OpenviduConfig 2019-10-09 12:32:49 +02:00
pabloFuente 622d549903 openvidu-server: OpenviduConfig#stringifiedArrayOfStringToListOfStrings fix 2019-10-09 12:01:48 +02:00
pabloFuente 2fa0c7b5b5 openvidu-server: OpenViduConfig#stringifiedArrayOfStringToListOfStrings 2019-10-09 11:54:16 +02:00
pabloFuente c1dced2bd0 openvidu-server: removed unused import from SessionRestController 2019-10-09 11:47:14 +02:00
pabloFuente b315a7071f openvidu-server: KmsManager sendMediaNodeAddedEvent 2019-10-09 11:26:31 +02:00
pabloFuente 27c67952cc openvidu-server: add openvidu.recording.composed-url to GET /config 2019-10-09 11:06:10 +02:00
pabloFuente 96ea74899d openvidu-server: further config paramters check 2019-10-09 10:57:04 +02:00
pabloFuente 3ed4ae0856 openvidu-server: OpenviduConfig refactoring 2019-10-08 17:12:22 +02:00
pabloFuente de2153fe0f openvidu-server: CallDetailRecord fix (new CDREventParticipant) 2019-10-08 09:38:23 +02:00
pabloFuente 97ff8426ab openvidu-server: ParticipantSummary simplified 2019-10-08 09:36:48 +02:00
pabloFuente d3270ca2a1 openvidu-test-e2e: recording time fix 2019-10-07 22:29:49 +02:00
pabloFuente 0eef367639 openvidu-server: Kms#toString 2019-10-07 17:33:36 +02:00
pabloFuente 1409363dd0 openvidu-server: make KmsManager#postConstruct protected 2019-10-07 17:21:58 +02:00
pabloFuente 25beb263f8 openvidu-test-e2e: moved CommandLineExecutor to openvidu-test-browsers repo 2019-10-07 17:21:00 +02:00
pabloFuente 38de464694 openvidu-test-e2e: fix openviduJavaClientTest 2019-10-07 14:40:08 +02:00
pabloFuente a007f30687 openvidu-server: avoid race condition when checking new final user 2019-10-07 13:11:13 +02:00
Martin 0f7e2e2b89
Add return to avoid double-consent
See issue #330
2019-10-04 19:03:48 +02:00
pabloFuente 9cd389eb61 openvidu-test-browsers: CustomHttpClient fixes 2019-10-04 16:11:52 +02:00
pabloFuente 638176a6d4 Move REST client and Webhook from openvidu-test-e2e to openvidu-test-browsers repo 2019-10-04 15:31:24 +02:00
pabloFuente 1f47c1b9e4 openvidu-test-e2e: simplify REST API test 2019-10-04 15:10:10 +02:00
pabloFuente a30290225d openvidu-server: mediaNodeAdded and mediaNodeRemoved webhook events 2019-10-04 14:20:54 +02:00
pabloFuente b37d9850cc openvidu-server: OpenviduConfig removed from CallDetailRecord 2019-10-04 13:31:14 +02:00
pabloFuente bf1a86fc9a openvidu-server: prepare for mediaNode CDR events 2019-10-04 13:29:27 +02:00
pabloFuente bdc35d6654 openvidu-server: SessionManager collections initialization refactoring 2019-10-04 12:51:56 +02:00
pabloFuente e8e85a2c58 openvidu-server: QuarantineKiller 2019-10-04 11:12:40 +02:00
pabloFuente 5f1f360a5b openvidu-server: remove unused destroyWhenUnused 2019-10-04 10:56:35 +02:00
pabloFuente 021944801e openvidu-server: bug fix on kms.uris initialization 2019-10-04 10:54:40 +02:00
pabloFuente ba669573c4 openvidu-server: mediaServerId in Session, quarantined in Kms 2019-10-04 10:13:25 +02:00
pabloFuente 8624927a33 openvidu-server: kms.uris validation to its own public method 2019-10-03 10:14:16 +02:00
pabloFuente c44c3cdd76 openvidu-server: CommandExecutor refactoring 2019-10-01 13:01:05 +02:00
pabloFuente 7d6cbeb049 openvidu-server: new class KmsProperties refactoring 2019-09-30 16:12:42 +02:00
pabloFuente a8ffe78411 openvidu-server: JsonUtils now in charge of file to JSON 2019-09-27 15:42:49 +02:00
pabloFuente 28b33203c9 openvidu-server-e2e: test description fix 2019-09-27 14:24:24 +02:00
pabloFuente 8fe65335ce openvidu-test-e2e: print screenshot on event timeout 2019-09-27 12:03:15 +02:00
pabloFuente b2e3c7ac2b openvidu-recording Firefox container 2019-09-27 10:31:31 +02:00
pabloFuente 2389d22e4a openvidu-server: simplify DockerManager (no exposed ports or port bindings) 2019-09-26 13:46:05 +02:00
pabloFuente e78f13db54 openvidu-browser: allow 'window' string as videoSource in modern Chrome/Firefox 2019-09-25 18:12:50 +02:00
pabloFuente 47312205c5 openvidu-browser: OpenVidu.getUserMedia works for screen videoSource 2019-09-25 15:23:18 +02:00
pabloFuente f37f030d98 openvidu-server: avoid NullPointer on handleUncaughtException 2019-09-25 15:19:42 +02:00
pabloFuente 8f0ec7fbbb openvidu-browser: make Stream.getMediaStream() public 2019-09-25 12:29:26 +02:00
pabloFuente 6becb032d4 openvidu-server: layouts antMatchers fix 2019-09-25 10:59:28 +02:00
pabloFuente e4362925f6 openvidu-server: allow using "customLayout" prop with external URL 2019-09-23 17:07:53 +02:00
pabloFuente 1f258fed3b openvidu-test-e2e: reset OpenVidu object afterEach 2019-09-20 12:46:34 +02:00
pabloFuente 53550e96f9 Ionic IOS test 2019-09-19 16:23:47 +02:00
pabloFuente 1462123fb5 openvidu-browser: TypeDoc typo fix 2019-09-19 15:48:32 +02:00
pabloFuente 1fcf73f05f openvidu-browser: Publisher.replaceTrack method 2019-09-19 15:33:37 +02:00
pabloFuente a027cb46d1 openvidu-server: avoid NullPointerException on empty getStringParam() 2019-09-19 09:44:27 +02:00
pabloFuente d393b1b0e8 openvidu-test-e2e: openviduJavaClient screenSharing fix 2019-09-17 18:30:55 +02:00
pabloFuente 5e26344df1 openvidu-test-e2e: print screen on screenshare tests 2019-09-17 17:56:49 +02:00
pabloFuente 57ec4e72bf openvidu-test-e2e: openviduJavaClientTest fix 2019-09-16 17:32:25 +02:00
pabloFuente b00da9447c openvidu-test-e2e: webhook test extended to test filterEventDispatched 2019-09-16 16:53:09 +02:00
pabloFuente c8feebaf57 openvidu-server: webhook and CDR filterEventDispatched event 2019-09-16 16:50:40 +02:00
pabloFuente 9336773cbc openvidu-test-e2e: logs in streamPropertyChanged test for videoDimensions 2019-09-16 15:54:59 +02:00
pabloFuente 19d30558d8 openvidu-server: POST /api/signal return 406 if any connectionId wrong 2019-09-16 14:42:54 +02:00
pabloFuente eb57d02188 openvidu-test-e2e: publisher height fixed 2019-09-16 12:36:17 +02:00
pabloFuente 743ea311a3 openvidu-test-e2e: fix publisher height check with new tab sharing infobat 2019-09-16 11:22:34 +02:00
pabloFuente d3b552e940 openvidu-test-e2e: extended REST API test for /api/signal 2019-09-16 10:57:20 +02:00
pabloFuente 620816da08 openvidu-server: POST /api/signal 2019-09-16 10:56:39 +02:00
pabloFuente 2ed986053c openvidu-browser: SignalEvent update to support signal REST API 2019-09-16 10:00:38 +02:00
pabloFuente 80cd9dacea SpringBoot version to 2.1.7 (bug fix SSL certificate) 2019-09-16 09:57:00 +02:00
pabloFuente de0d073d7a openvidu-server: rollback to janino dependency 2019-09-15 01:45:12 +02:00
pabloFuente 0b6c893326 openvidu-server: update spring-boot to 2.1.8-RELEASE 2019-09-15 01:11:54 +02:00
pabloFuente d8a97733ec openvidu-server: removed janino dependency from pom.xml 2019-09-15 00:20:21 +02:00
pabloFuente 439cf60798 openvidu-server: set createdAt property of endpoints before ICE processing 2019-09-13 16:33:21 +02:00
pabloFuente 6e19337260 openvidu-browser: Stream#getRTCPeerConnection TypeDoc description 2019-09-11 11:16:18 +02:00
pabloFuente 64f18d0b68 openvidu-browser: expose Stream#getRTCPeerConnection 2019-09-11 11:13:35 +02:00
pabloFuente 77bad4e14f openvidu-node-client: avoid [object object] error on OpenVidu#fetch 2019-09-11 10:33:10 +02:00
pabloFuente 8ad13167cd Jenkinsfile update: actively wait for KMS to be ready 2019-09-05 17:58:25 +02:00
pabloFuente d9df0bb022 openvidu-server: normalize sessionId property of json events (from "session" to "sessionId") 2019-09-05 17:22:46 +02:00
pabloFuente 8f67cd9d9e openviu-server: close KurentoClients in KmsManager on PreDestroy 2019-08-23 11:34:47 +02:00
pabloFuente 63b61b0e56 openvidu-test-e2e: webhook test fix 2019-08-23 10:33:52 +02:00
pabloFuente 27d77a53fc openvidu-test-e2e: extended webhook test 2019-08-23 10:10:40 +02:00
pabloFuente 97458100a5 openvidu-server: DockerManager allows not setting container name 2019-08-23 10:10:16 +02:00
pabloFuente b8a53fdb7e openvidu-server: participantJoined CDR/webhook event with client and server data 2019-08-23 10:09:31 +02:00
pabloFuente 8da682162d openvidu-server: docker containers stop and removal process refactoring 2019-08-22 12:36:19 +02:00
pabloFuente c3da6e9b8b openvidu-server: allow for empty kms.uris array. DockerManager#getRunningContainers 2019-08-21 15:04:22 +02:00
pabloFuente 4253292ca1 openvidu-test-e2e: Jenkinsfile builds OpenVidu Server dashboard 2019-08-19 11:54:41 +02:00
pabloFuente 715f0259e8 openvidu-test-e2e: url recording fix 2019-08-09 15:16:54 +02:00
pabloFuente dfaaf70633 openvidu-server: dashboard folder structure refactoring. Static files ignored 2019-08-09 14:55:01 +02:00
pabloFuente 3d366abd18 openvidu-browser: static folder ignored 2019-08-09 14:06:05 +02:00
pabloFuente 1a67cdd425 openvidu-server: recording url fix 2019-08-09 13:56:26 +02:00
pabloFuente 1b2b10afde openvidu-test-e2e: assertion message 2019-08-09 10:11:30 +02:00
pabloFuente 2e7de0a21f openvidu-browser and openvidu-node-client: grunt dependencies update 2019-08-09 10:07:48 +02:00
pabloFuente 9436315f7d openvidu-server: recording url only defined on ready or failed status 2019-08-09 09:34:30 +02:00
pabloFuente b3200bfd77 openvidu-test-e2e: recording url fix 2019-08-09 09:09:47 +02:00
pabloFuente d736dd2eef openvidu-server: recording entities will always have url param defined 2019-08-08 17:16:59 +02:00
pabloFuente bca34e150d openvidu-server: checkDockerEnabled refactoring 2019-08-02 13:51:43 +02:00
pabloFuente bf76ff2bb5 openvidu-server: DockerManager allows to manually configure port binding 2019-08-02 11:43:39 +02:00
pabloFuente eced1f618c openvidu-testapp: dependencies update 2019-07-30 14:25:03 +02:00
pabloFuente c242bea08a openvidu-server: recordings path endpoint security fix 2019-07-30 12:07:56 +02:00
jenkinsopenvidu 91c06a0b7b Update to version v2.11.0 2019-07-29 15:50:03 +00:00
pabloFuente 36969b37e9 openvidu-server: openvidu-java-client udpate 2019-07-29 17:40:32 +02:00
openvidu 870a666af2 Update openvidu-java-client to version v2.11.0 2019-07-29 15:18:03 +00:00
jenkinsopenvidu e80b692be4 Update openvidu-node-client to version v2.11.0 2019-07-29 15:06:24 +00:00
pabloFuente 4cb6ae1bba Kurento upgrade to 6.11.0 2019-07-29 16:26:15 +02:00
pabloFuente 186db129a8 openvidu-server: KMS disconnection minor refactoring 2019-07-29 10:24:13 +02:00
pabloFuente 494547e34e openvidu-node-client: dependencies update 2019-07-29 10:19:31 +02:00
pabloFuente 9ab61256ba openvidu-browser: exclude js files from Typedoc 2019-07-29 10:07:14 +02:00
pabloFuente 519f2b87e9 openvidu-browser: dependencies update 2019-07-29 09:57:20 +02:00
pabloFuente 3444b7a803 openvidu-server: remove duplicated recordingStopped event 2019-07-16 11:45:19 +02:00
pabloFuente a89b12d682 openvidu-server: CDR recordingStopped event on recordingStatusChanged (stopped) 2019-07-15 14:26:08 +02:00
pabloFuente 705119d15a openvidu-server: check websocket uris to its own method 2019-07-10 11:30:05 +02:00
pabloFuente 3b46860776 openvidu-browser: OpenVidu.getDevices Ionic Android 2019-07-09 09:41:31 +02:00
pabloFuente 7670711f46 openvidu-server: fix KurentoClient association to Kms instances 2019-07-09 09:40:40 +02:00
pabloFuente 85a3dda3a1 openvidu-server: rollback of ChromeUser in openvidu-test-browsers 2019-07-08 17:41:44 +02:00
pabloFuente 85c5b26dfd openvidu-test-browsers: ignore alert extended 2019-07-08 14:55:56 +02:00
pabloFuente c2186e2f35 openvidu-server: stored recording wrappers not removed until download 2019-07-08 14:29:21 +02:00
pabloFuente bd036fc419 openvidu-server: application.properties refactoring 2019-07-05 15:00:06 +02:00
pabloFuente 89432c52a9 openvidu-server: random id in Kms 2019-07-05 12:56:18 +02:00
pabloFuente c8576b4358 openvidu-server: RandomStringGenerator removed 2019-07-05 12:54:19 +02:00
pabloFuente fa08ee87f0 openvidu-browser: speechEvent.stop fix 2 2019-07-04 16:36:22 +02:00
pabloFuente 49360d9771 openvidu-browser: speechEvent.stop undefined fix 2019-07-04 16:34:11 +02:00
pabloFuente edf5bf5fe9 openvidu-browser: rollback fix to Ionic iOS subscribers 2019-07-04 16:28:14 +02:00
pabloFuente bb9c59deed openvidu-server: NullPointer fix when closing not active session 2019-07-04 15:39:27 +02:00
pabloFuente 375186a8fb openvidu-server: return Kms on KmsManager#removeKms 2019-07-04 10:53:49 +02:00
pabloFuente a79434fb4a openvidu-server: initializeKurentoClients refactoring (support for POST /pro/media-servers) 2019-07-04 10:25:37 +02:00
pabloFuente a4509528f1 openvidu-server: externalized properties file 2019-07-03 10:42:26 +02:00
pabloFuente a00c90423b openvidu-server: recording stop process fix 2019-07-01 13:51:16 +02:00
pabloFuente dd29173785 openvidu-node-client: dependencies update 2019-07-01 10:51:25 +02:00
pabloFuente 843fdb7b30 openvidu-server: webhook HTTP headers improvements 2019-07-01 09:33:38 +02:00
pabloFuente 86540ab3a8 openvidu-server: set ready state to COMPOSED video recordings 2019-06-27 16:36:21 +02:00
pabloFuente 0508971563 openvidu-test-e2e: restApiTest fix 2019-06-27 15:15:03 +02:00
pabloFuente 921b7c1ea8 openvidu-server: add webhook properties to GET /config endpoint 2019-06-27 14:47:14 +02:00
pabloFuente 690900a45b openvidu-server: recording status refactoring 2019-06-27 14:04:02 +02:00
pabloFuente a528e1da8e openvidu-server: avoid sending deprecated recording events to webhook 2019-06-25 12:08:36 +02:00
pabloFuente cc934b5d71 openvidu-server: decouple recording stopped ws notification and CD/webhook message 2019-06-25 11:02:09 +02:00
pabloFuente bd54e77f08 openvidu-test-e2e: Jenkinsfile new ports for Chrome and Firefox containers 2019-06-25 10:25:51 +02:00
pabloFuente a72804ea99 openvidu-test-e2e: webhook test extended 2019-06-25 10:19:16 +02:00
pabloFuente 5c68027257 openvidu-server: BashCoturnCredentialsService PostConstruct initialization 2019-06-25 10:11:51 +02:00
pabloFuente 30ac1f605d Jenkinsfile update (webhook to localhost) 2019-06-24 17:25:40 +02:00
pabloFuente a073f73a8b openvidu-server: recordingStarted alwasy sent to CDR/Webhook 2019-06-24 17:21:26 +02:00
pabloFuente e5e9d1f4cc openvidu-server: application.properties fix 2019-06-24 15:52:09 +02:00
pabloFuente 69d7230fa8 openvidu-server: CDREventEnd constructor update 2019-06-24 15:16:05 +02:00
pabloFuente 9c4941de9a openvidu-server: webhook 2019-06-24 15:15:28 +02:00
pabloFuente d72063b97d openvidu-server: webhook properties 2019-06-21 13:16:10 +02:00
pabloFuente 851d07d36e openvidu-test-e2e: Jenkinsfile fix 2019-06-21 11:36:12 +02:00
pabloFuente 5a48a863d2 openvidu-test-e2e: Jenkinsfile remove stranded containers 2019-06-21 11:33:55 +02:00
pabloFuente 501114c202 openvidu-server: RecordingService seal metadata log update 2019-06-20 16:28:16 +02:00
pabloFuente a57f357527 openvidu-server: minor log update 2019-06-20 16:25:34 +02:00
pabloFuente bf6148d5cf Jenkinsfile: use compiled version of openvidu-java-client 2019-06-20 14:27:34 +02:00
pabloFuente cb92fc7dd2 openvidu-server: asynchronous download of recordings 2019-06-20 14:06:43 +02:00
pabloFuente 964b273692 openvidu-browser: Ionic iOS processAnswer fix 2019-06-20 11:48:23 +02:00
pabloFuente 78602702b8 RecordingDownloader logic 2019-06-19 17:45:54 +02:00
pabloFuente 3ca64d9cca openvidu-server: server CDR files under /cdr/FILE.log. REST GET /cdr 2019-06-19 11:04:37 +02:00
pabloFuente 02f49e0467 openvidu-server: openvidu.cdr.path property 2019-06-19 10:51:17 +02:00
pabloFuente 4eae276d15 openvidu-server: KmsManager refactoring. Kms toJson extended 2019-06-18 15:37:39 +02:00
pabloFuente d07d2055ea openvidu-test-e2e: videoFilterTest wait for modal to open 2019-06-18 11:56:15 +02:00
pabloFuente 4985847511 openvidu-server: store KurentoSessions in Kmss 2019-06-17 10:10:30 +02:00
pabloFuente 64949012e4 openvidu-server: logback color configuration inversed 2019-06-14 12:39:18 +02:00
pabloFuente 3d17ffcec0 openvidu-server: LoadManager refactoring 2019-06-13 17:59:37 +02:00
pabloFuente 1a8b657eb7 openvidu-server: logging.colors property 2019-06-13 15:25:11 +02:00
pabloFuente fbba0691ec openvidu-server: fixed logback warnings on boot 2019-06-13 13:01:18 +02:00
pabloFuente 4d32de7c19 openvidu-server: move KurentoConnectionListener creation to KmsManager 2019-06-13 12:18:13 +02:00
pabloFuente c37e777243 openvidu-parent: removed unused profiles 2019-06-13 11:37:48 +02:00
pabloFuente c3eb9cb4ce openvidu-test-browsers 1.1.0 2019-06-13 10:27:10 +02:00
pabloFuente a5effc9aef openvidu-test-e2e: dimensions fix 2019-06-13 10:14:19 +02:00
pabloFuente ad804151bd openvidu-test-e2e: afterEach do not always restart KMS 2019-06-13 10:12:58 +02:00
pabloFuente 5cb59193ee openvidu-server: fixed kmsDisconnectionTime for recordings 2019-06-12 18:29:41 +02:00
pabloFuente 2daf1c7f34 openvidu-test-e2e: openViduJavaClientTest more time for recording 2019-06-12 17:31:24 +02:00
pabloFuente 83f0b13d69 openvidu-test-e2e: remoteRecordAudioOnlyVideoOnlyTest fixed 2019-06-12 17:22:15 +02:00
pabloFuente c51aa7ca91 openvidu-test-e2e: openViduJavaClientTest recording properties log 2019-06-12 16:53:26 +02:00
pabloFuente 4c8f7229f2 openvidu-server: resetting process fix 2019-06-12 16:18:08 +02:00
pabloFuente dfb9fcfa75 openvidu-test-browsers: ignore alerts on browsers 2019-06-12 15:08:24 +02:00
pabloFuente 2551e131ad openvidu-server: reset MediaPipeline latch on KurentoSession reset 2019-06-12 15:06:38 +02:00
pabloFuente 42cf3b4841 openvidu-server: commented tests removed 2019-06-11 16:55:36 +02:00
Pablo Fuente Pérez 8b7e12949b
Update Jenkinsfile 2019-06-11 16:36:52 +02:00
pabloFuente 56c4cbdd98 openvidu-server: update WebMvcConfigurer to new non-deprecated API 2019-06-11 16:27:19 +02:00
pabloFuente f3310b2abf POM dependencies update 2019-06-11 16:13:48 +02:00
pabloFuente 1cfdcb0fed openvidu-server: LoadManager interface 2019-06-11 14:28:43 +02:00
pabloFuente e7bf2073ae openvidu-server: Update to SpringBoot 2 2019-06-11 13:56:16 +02:00
pabloFuente 883d686542 openvidu-server: refactoring for multiple KMS support 2019-06-10 17:03:41 +02:00
pabloFuente 0b22c295ee openvidu-browser: old fix for iosIonic processAnswer removed 2019-06-06 18:14:36 +02:00
pabloFuente f28f006370 openvidu-browser: bug fix (do not send streamPropertyChanged from mobile devices when rotating if stream not Published) 2019-06-06 17:48:30 +02:00
pabloFuente b6ea4d0584 openvidu-server dashboard to Angular 8 2019-06-05 17:27:43 +02:00
pabloFuente 5086e5dbd6 openvidu-browser: bug fix when selecting Entire screen in Electron 2019-06-05 14:14:44 +02:00
853 changed files with 112033 additions and 94921 deletions

55
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,55 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
<!--
IMPORTANT!!! IMPORTANT!!! IMPORTANT!!! IMPORTANT!!!
YOU SHOULD NEVER DELETE THE CONTENT OF THIS TEMPLATE WHEN OPENING AN ISSUE. IF YOUR QUESTION DOES NOT FIT THE TEMPLATE THEN IT MOST PROBABLY BELONGS TO OPENVIDU FORUM (https://openvidu.discourse.group/)
Hi! First of all, welcome to OpenVidu issue tracker. Please, carefully read the two points below before opening a new issue:
1. Is your question really a bug? In other words: did you actually get an unexpected behavior from OpenVidu platform? If you are not sure about the answer or you just want support for a particular use case, you can post a new question in our official Discourse Forum (https://openvidu.discourse.group/). OpenVidu community or a team's member will reply ASAP.
2. If your question is undoubtedly a bug, check that there's no other issue (opened or closed) talking about it. Your question may have already been answered! If you cannot find anything useful, please fill the report below.
-->
**Describe the bug**
A few words describing what the bug is.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Wrong current behavior**
A clear and concise description of what is actually happening instead of the expected behavior.
**OpenVidu tutorial where to replicate the error**
This is an EXTREMELY IMPORTANT STEP. If we are able to replicate the error in any of the official [OpenVidu Tutorials](https://github.com/OpenVidu/openvidu-tutorials) or [OpenVidu Demos](https://github.com/OpenVidu), then we will be able to quickly fix it. If you are getting the error in your own application, please try to add the necessary changes to the most similar tutorial so it fails with the same error (try to keep those changes as contained as possible, so that the original tutorial maintains its integrity). Once you have an application to replicate the error, explain in detail the steps to get it like this:
1. Clone repository [...]
2. Compile the application like this [...]
3. Run OpenVidu Server like this [...]
4. Run the application like this [...]
5. Join 1 user... Publish a video stream [...]
6. See error
**OpenVidu deployment info**
How is your OpenVidu Server instance deployed when you get the bug. A couple of possible examples are listed below:
- Docker container as explained in OpenVidu tutorials, run with command `docker run ...` on macOS Catalina 10.15.1
- AWS deployment as explained in OpenVidu Docs (https://docs.openvidu.io/en/stable/deployment/deploying-aws/)
> **IMPORTANT NOTE**: please, if you think the bug might be related to OpenVidu Server side, specify here if you are also getting the error by using OpenVidu Server Demos instance. This instance is publicly available (use it only for this test, because it is not secure!!!): **URL**: `https://demos.openvidu.io:4443`, **SECRET**: `MY_SECRET`
**Client device info (if applicable)**
Describe the client device(s) or platform(s) where you are able to replicate the error. For example:
- Chrome 78.0.3904.97 (Official Build) (64-bit) on Windows 10 (1903).
- Firefox Mobile 68.2.0 running on OnePlus 6 with Android 9.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here. For example, attach any useful logs related to the issue.

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: OpenVidu Discourse forum
url: https://openvidu.discourse.group/
about: If your question is about a certain feature or getting support for a specific use case, please use OpenVidu Discourse Group forum

View File

@ -0,0 +1,445 @@
name: openvidu-components-angular Tests
on:
push:
branches:
- master
paths:
- 'openvidu-components-angular/**'
- '.github/workflows/openvidu-components-angular-tests.yml'
pull_request:
branches:
- master
workflow_dispatch:
inputs:
commit_sha:
description: 'Commit SHA'
required: false
default: ''
jobs:
test_setup:
name: Test setup
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Commit URL
run: echo https://github.com/OpenVidu/openvidu/commit/${{ inputs.commit_sha || github.sha }}
- name: Send Dispatch Event
env:
GITHUB_TOKEN: ${{ secrets.OPENVIDU_DISPATCH_EVENT_GA }}
COMMIT_MESSAGE: ${{ github.event.head_commit.message || 'Manually' }}
COMMIT_URL: ${{ github.event.commits[0].url || 'Manually' }}
BRANCH_NAME: ${{ github.ref_name }}
run: |
curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
https://api.github.com/repos/OpenVidu/openvidu-call/dispatches \
-d '{"event_type":"openvidu-components-angular","client_payload":{"commit-message":"'"$COMMIT_MESSAGE"'","commit-ref":"'"$COMMIT_URL"'", "branch-name":"'"$BRANCH_NAME"'"}}'
nested_events:
needs: test_setup
name: Nested events
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Install dependencies
run: |
cd openvidu-components-angular
npm install
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run nested components E2E event tests
env:
LAUNCH_MODE: CI
run: npm run e2e:nested-events --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
nested_structural_directives:
needs: test_setup
name: Nested Structural Directives
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run nested structural directives tests
env:
LAUNCH_MODE: CI
run: npm run e2e:nested-structural-directives --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
nested_attribute_directives:
needs: test_setup
name: Nested Attribute Directives
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run nested attribute directives tests
env:
LAUNCH_MODE: CI
run: npm run e2e:nested-attribute-directives --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_directives:
needs: test_setup
name: API Directives Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-directives --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_internal_directives:
needs: test_setup
name: Internal Directives Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-internal-directives --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_chat:
needs: test_setup
name: Chat E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-chat --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_events:
needs: test_setup
name: Events E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-events --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_media_devices:
needs: test_setup
name: Media devices E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-media-devices --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_panels:
needs: test_setup
name: Panels E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-panels --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_screen_sharing:
needs: test_setup
name: Screen sharing E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-screensharing --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_stream:
needs: test_setup
name: Stream E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -v $(pwd)/openvidu-components-angular/e2e/assets:/e2e-assets selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Tests
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-stream --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main
e2e_toolbar:
needs: test_setup
name: Toolbar E2E
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_sha || github.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install wait-on package
run: npm install -g wait-on
# - name: Run Browserless Chrome
# run: docker run -d -p 3000:3000 --network host browserless/chrome:1.57-chrome-stable
- name: Run Chrome
run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:138.0
- name: Run openvidu-local-deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
- name: Start OpenVidu Call backend
uses: OpenVidu/actions/start-openvidu-call@main
- name: Build and Serve openvidu-components-angular Testapp
uses: OpenVidu/actions/start-openvidu-components-testapp@main
- name: Run Webcomponent E2E
env:
LAUNCH_MODE: CI
run: npm run e2e:lib-toolbar --prefix openvidu-components-angular
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main

View File

@ -0,0 +1,56 @@
name: OpenVidu integration tests
on:
push:
branches:
- master
paths:
- "openvidu-test-integration/**"
- ".github/workflows/openvidu-integration-tests.yml"
workflow_dispatch:
jobs:
integration-tests:
name: Integration tests
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- name: Configure OpenVidu Local Deployment
uses: OpenVidu/actions/start-openvidu-local-deployment@main
with:
ref-openvidu-local-deployment: development
pre_startup_commands: |
sed -i 's/interval: 10s/interval: 1s/' livekit.yaml
sed -i '/interval: 1s/a \ fixer_interval: 10s' livekit.yaml
- name: Install LiveKit CLI
run: |
curl -sSL https://get.livekit.io/cli | bash
- name: Checkout current repository
uses: actions/checkout@v4
with:
path: openvidu
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
working-directory: ./openvidu/openvidu-test-integration
run: npm ci
- name: Run tests
working-directory: ./openvidu/openvidu-test-integration
run: npm run test:ci
- name: Upload report
uses: actions/upload-artifact@v4
if: always()
with:
name: openvidu-integration-tests-report
path: ./openvidu/openvidu-test-integration/test-results.json
retention-days: 7
- name: Cleanup
if: always()
uses: OpenVidu/actions/cleanup@main

5
.gitignore vendored
View File

@ -4,8 +4,10 @@
/target
.classpath
.idea
.project
.settings
*.iml
*orig
.springBeans
*tmp/
@ -17,8 +19,11 @@ nbactions.xml
.externalToolBuilders
*bin/
*/.vscode/*
.vscode/*
*/.sts4-cache/*
*/.project
*/.classpath
*/.settings/*
*/.tscache/*
.factorypath

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "openvidu-livekit"]
path = openvidu-livekit
url = https://github.com/OpenVidu/openvidu-livekit.git

2
NOTICE
View File

@ -1,4 +1,4 @@
(C) Copyright 2017-2019 OpenVidu (https://openvidu.io)
(C) Copyright 2017-2022 OpenVidu (https://openvidu.io)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@ -1,7 +1,13 @@
[![Backers on Open Collective](https://opencollective.com/openvidu/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/openvidu/sponsors/badge.svg)](#sponsors) [![License badge](https://img.shields.io/badge/license-Apache2-orange.svg)](http://www.apache.org/licenses/LICENSE-2.0)
[![Documentation badge](https://readthedocs.org/projects/fiware-orion/badge/?version=latest)](https://openvidu.io/docs/home/)
[![Backers on Open Collective](https://opencollective.com/openvidu/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/openvidu/sponsors/badge.svg)](#sponsors)
[![License badge](https://img.shields.io/badge/license-Apache2-orange.svg)](http://www.apache.org/licenses/LICENSE-2.0)
[![OpenVidu Tests](https://github.com/OpenVidu/openvidu/actions/workflows/openvidu-ce-test.yml/badge.svg)](https://github.com/OpenVidu/openvidu/actions/workflows/openvidu-ce-test.yml)
[![Npm version](https://img.shields.io/npm/v/openvidu-browser?label=npm-version)](https://npmjs.org/package/openvidu-browser)
[![Npm downloads](https://img.shields.io/npm/dw/openvidu-browser?label=npm2-downloads)](https://npmjs.org/package/openvidu-browser)
[![Documentation Status](https://readthedocs.org/projects/openvidu/badge/?version=stable)](https://docs.openvidu.io/en/stable/?badge=stable)
[![Docker badge](https://img.shields.io/docker/pulls/openvidu/openvidu-server-kms.svg)](https://hub.docker.com/r/openvidu/openvidu-server-kms)
[![Support badge](https://img.shields.io/badge/support-sof-yellowgreen.svg)](https://groups.google.com/forum/#!forum/openvidu)
[![Support badge](https://img.shields.io/badge/support-sof-yellowgreen.svg)](https://openvidu.discourse.group/)
[![Twitter Follow](https://img.shields.io/twitter/follow/openvidu.svg?style=social)](https://twitter.com/openvidu)
[![][OpenViduLogo]](https://openvidu.io)
@ -11,12 +17,16 @@ openvidu
Visit [openvidu.io](https://openvidu.io)
## Community Forum
Visit [OpenVidu Community Forum](https://openvidu.discourse.group/)
[OpenViduLogo]: https://secure.gravatar.com/avatar/5daba1d43042f2e4e85849733c8e5702?s=120
## Contributors
This project exists thanks to all the people who contribute.
<a href="https://github.com/undefined/undefinedgraphs/contributors"><img src="https://opencollective.com/openvidu/contributors.svg?width=890&button=false" /></a>
<a href="https://github.com/OpenVidu/openvidu/contributors"><img src="https://opencollective.com/openvidu/contributors.svg?width=890&button=false" /></a>
## Backers
@ -25,6 +35,11 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com
<a href="https://opencollective.com/openvidu#backers" target="_blank"><img src="https://opencollective.com/openvidu/backers.svg?width=890"></a>
## Acknowledgments
OpenVidu has been supported under project "CPP2021-008720 NewGenVidu: An elastic, user-friendly and privacy-friendly videoconferencing platform", funded by MCIN/AEI/10.13039/501100011033 and by the European Union-NextGenerationEU/PRTR.
<img height="75px" src="https://docs.openvidu.io/en/stable/img/logos/support.jpg">
## Sponsors

View File

@ -1,61 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
docs/
lib/

View File

@ -1 +0,0 @@
docs/

View File

@ -1,154 +0,0 @@
{
"extends": "tslint:recommended",
"rules": {
"array-type": [
true,
"array"
],
"ban-types": {
"options": [
[
"Object",
"Avoid using the `Object` type. Did you mean `object`?"
],
[
"Function",
"Avoid using the `Function` type. Prefer a specific function type, like `() => void`, or use `ts.AnyFunction`."
],
[
"Boolean",
"Avoid using the `Boolean` type. Did you mean `boolean`?"
],
[
"Number",
"Avoid using the `Number` type. Did you mean `number`?"
],
[
"String",
"Avoid using the `String` type. Did you mean `string`?"
]
]
},
"class-name": true,
"comment-format": [
true,
"check-space"
],
"curly": [
true,
"ignore-same-line"
],
"indent": [
true,
"spaces",
2
],
"interface-name": [
true,
"never-prefix"
],
"interface-over-type-literal": true,
"jsdoc-format": true,
"no-inferrable-types": true,
"no-internal-module": true,
"no-null-keyword": false,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": [
true,
"ignore-template-strings"
],
"no-var-keyword": true,
"object-literal-shorthand": true,
"one-line": [
true,
"check-open-brace",
"check-whitespace"
],
"prefer-const": true,
"quotemark": [
true,
"single",
"avoid-escape",
"avoid-template"
],
"semicolon": [
true,
"always",
"ignore-bound-class-methods"
],
"space-within-parens": true,
"triple-equals": true,
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
},
{
"call-signature": "onespace",
"index-signature": "onespace",
"parameter": "onespace",
"property-declaration": "onespace",
"variable-declaration": "onespace"
}
],
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-module",
"check-separator",
"check-type"
],
"no-implicit-dependencies": [
true,
"dev"
],
"object-literal-key-quotes": [
true,
"consistent-as-needed"
],
"variable-name": [
true,
"ban-keywords",
"check-format",
"allow-leading-underscore"
],
"arrow-parens": false,
"arrow-return-shorthand": false,
"forin": false,
"member-access": false,
"no-conditional-assignment": false,
"no-console": false,
"no-debugger": false,
"no-empty-interface": false,
"no-eval": false,
"no-object-literal-type-assertion": false,
"no-shadowed-variable": false,
"no-submodule-imports": false,
"no-var-requires": false,
"ordered-imports": false,
"prefer-conditional-expression": false,
"radix": false,
"trailing-comma": false,
"align": false,
"eofline": false,
"max-line-length": false,
"no-consecutive-blank-lines": false,
"space-before-function-paren": false,
"ban-comma-operator": false,
"max-classes-per-file": false,
"member-ordering": false,
"no-angle-bracket-type-assertion": false,
"no-bitwise": false,
"no-namespace": false,
"no-reference": false,
"object-literal-sort-keys": false,
"one-variable-per-declaration": false,
"unified-signatures": false
}
}

View File

@ -1,22 +0,0 @@
module.exports = {
lib: [
"lib.dom.d.ts",
"lib.es5.d.ts",
"lib.es2015.promise.d.ts",
"lib.scripthost.d.ts"
],
mode: "file",
module: "commonjs",
name: "OpenVidu Browser",
target: "es5",
externalPattern: "node_modules",
exclude: [
"**/OpenViduInternal/Interfaces/Private/**",
"**/OpenViduInternal/WebRtcStats/WebRtcStats.ts",
"**/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts"
],
excludeExternals: true,
excludePrivate: true,
theme: "default",
readme: "none"
}

File diff suppressed because it is too large Load Diff

View File

@ -1,46 +0,0 @@
{
"author": "OpenVidu",
"dependencies": {
"@types/node": "12.0.3",
"@types/platform": "1.3.2",
"freeice": "2.2.2",
"hark": "1.2.3",
"platform": "1.3.5",
"uuid": "3.3.2",
"wolfy87-eventemitter": "5.2.6"
},
"description": "OpenVidu Browser",
"devDependencies": {
"browserify": "16.2.3",
"grunt": "1.0.4",
"grunt-autoprefixer": "3.0.4",
"grunt-cli": "1.3.2",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-sass": "1.0.0",
"grunt-contrib-uglify": "4.0.1",
"grunt-contrib-watch": "1.1.0",
"grunt-string-replace": "1.3.1",
"grunt-ts": "6.0.0-beta.22",
"tsify": "4.0.1",
"tslint": "5.16.0",
"typedoc": "0.14.2",
"typescript": "3.4.5",
"uglify-js": "3.5.15"
},
"license": "Apache-2.0",
"main": "lib/index.js",
"name": "openvidu-browser",
"repository": {
"type": "git",
"url": "git://github.com/OpenVidu/openvidu"
},
"scripts": {
"browserify": "VERSION=${VERSION:-}; cd src && ../node_modules/browserify/bin/cmd.js Main.ts -p [ tsify ] --exclude kurento-browser-extensions --debug -o ../static/js/openvidu-browser-$VERSION.js -v",
"browserify-prod": "VERSION=${VERSION:-}; cd src && ../node_modules/browserify/bin/cmd.js --debug Main.ts -p [ tsify ] --exclude kurento-browser-extensions | ../node_modules/uglify-js/bin/uglifyjs --source-map content=inline --output ../static/js/openvidu-browser-$VERSION.min.js",
"build": "cd src/OpenVidu && ./../../node_modules/typescript/bin/tsc && cd ../.. && ./node_modules/typescript/bin/tsc --declaration src/index.ts --outDir ./lib --sourceMap --lib dom,es5,es2015.promise,scripthost",
"docs": "./node_modules/typedoc/bin/typedoc --options ./config/typedoc.js --out ./docs ./src && rm -rf ../../openvidu.io/api/openvidu-browser/* && cp -R ./docs/. ../../openvidu.io/api/openvidu-browser",
"test": "echo \"Error: no test specified\" && exit 1"
},
"types": "lib/index.d.ts",
"version": "2.10.0"
}

View File

@ -1,5 +0,0 @@
import { OpenVidu } from './OpenVidu/OpenVidu';
if (window) {
window['OpenVidu'] = OpenVidu;
}

View File

@ -1,169 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Session } from './Session';
import { Stream } from './Stream';
import { ConnectionOptions } from '../OpenViduInternal/Interfaces/Private/ConnectionOptions';
import { InboundStreamOptions } from '../OpenViduInternal/Interfaces/Private/InboundStreamOptions';
import { StreamOptionsServer } from '../OpenViduInternal/Interfaces/Private/StreamOptionsServer';
/**
* Represents each one of the user's connection to the session (the local one and other user's connections).
* Therefore each [[Session]] and [[Stream]] object has an attribute of type Connection
*/
export class Connection {
/**
* Unique identifier of the connection
*/
connectionId: string;
/**
* Time when this connection was created in OpenVidu Server (UTC milliseconds)
*/
creationTime: number;
/**
* Data associated to this connection (and therefore to certain user). This is an important field:
* it allows you to broadcast all the information you want for each user (a username, for example)
*/
data: string;
/**
* @hidden
*/
stream: Stream;
/**
* @hidden
*/
options: ConnectionOptions | undefined;
/**
* @hidden
*/
disposed = false;
/**
* @hidden
*/
rpcSessionId: string;
/**
* @hidden
*/
constructor(private session: Session, opts?: ConnectionOptions) {
let msg = "'Connection' created ";
if (!!opts) {
// Connection is remote
msg += "(remote) with 'connectionId' [" + opts.id + ']';
this.options = opts;
this.connectionId = opts.id;
this.creationTime = opts.createdAt;
if (opts.metadata) {
this.data = opts.metadata;
}
if (opts.streams) {
this.initRemoteStreams(opts.streams);
}
} else {
// Connection is local
msg += '(local)';
}
console.info(msg);
}
/* Hidden methods */
/**
* @hidden
*/
sendIceCandidate(candidate: RTCIceCandidate): void {
console.debug((!!this.stream.outboundStreamOpts ? 'Local' : 'Remote') + 'candidate for' +
this.connectionId, candidate);
this.session.openvidu.sendRequest('onIceCandidate', {
endpointName: this.connectionId,
candidate: candidate.candidate,
sdpMid: candidate.sdpMid,
sdpMLineIndex: candidate.sdpMLineIndex
}, (error, response) => {
if (error) {
console.error('Error sending ICE candidate: '
+ JSON.stringify(error));
}
});
}
/**
* @hidden
*/
initRemoteStreams(options: StreamOptionsServer[]): void {
// This is ready for supporting multiple streams per Connection object. Right now the loop will always run just once
// this.stream should also be replaced by a collection of streams to support multiple streams per Connection
options.forEach(opts => {
const streamOptions: InboundStreamOptions = {
id: opts.id,
createdAt: opts.createdAt,
connection: this,
hasAudio: opts.hasAudio,
hasVideo: opts.hasVideo,
audioActive: opts.audioActive,
videoActive: opts.videoActive,
typeOfVideo: opts.typeOfVideo,
frameRate: opts.frameRate,
videoDimensions: !!opts.videoDimensions ? JSON.parse(opts.videoDimensions) : undefined,
filter: !!opts.filter ? opts.filter : undefined
};
const stream = new Stream(this.session, streamOptions);
this.addStream(stream);
});
console.info("Remote 'Connection' with 'connectionId' [" + this.connectionId + '] is now configured for receiving Streams with options: ', this.stream.inboundStreamOpts);
}
/**
* @hidden
*/
addStream(stream: Stream): void {
stream.connection = this;
this.stream = stream;
}
/**
* @hidden
*/
removeStream(streamId: string): void {
delete this.stream;
}
/**
* @hidden
*/
dispose(): void {
if (!!this.stream) {
delete this.stream;
}
this.disposed = true;
}
}

View File

@ -1,191 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Stream } from './Stream';
import { FilterEvent } from '../OpenViduInternal/Events/FilterEvent';
import { StreamPropertyChangedEvent } from '../OpenViduInternal/Events/StreamPropertyChangedEvent';
import { OpenViduError, OpenViduErrorName } from '../OpenViduInternal/Enums/OpenViduError';
import { ObjMap } from '../OpenViduInternal/Interfaces/Private/ObjMap';
/**
* **WARNING**: experimental option. This interface may change in the near future
*
* Video/audio filter applied to a Stream. See [[Stream.applyFilter]]
*/
export class Filter {
/**
* Type of filter applied. This is the name of the remote class identifying the filter to apply in Kurento Media Server.
* For example: `"FaceOverlayFilter"`, `"GStreamerFilter"`.
*
* You can get this property in `*.kmd.json` files defining the Kurento filters. For example, for GStreamerFilter that's
* [here](https://github.com/Kurento/kms-filters/blob/53a452fac71d61795952e3d2202156c6b00f6d65/src/server/interface/filters.GStreamerFilter.kmd.json#L4)
*/
type: string;
/**
* Parameters used to initialize the filter.
* These correspond to the constructor parameters used in the filter in Kurento Media Server (except for `mediaPipeline` parameter, which is never needed).
*
* For example: for `filter.type = "GStreamerFilter"` could be `filter.options = {"command": "videobalance saturation=0.0"}`
*
* You can get this property in `*.kmd.json` files defining the Kurento filters. For example, for GStreamerFilter that's
* [here](https://github.com/Kurento/kms-filters/blob/53a452fac71d61795952e3d2202156c6b00f6d65/src/server/interface/filters.GStreamerFilter.kmd.json#L13-L31)
*/
options: Object;
/**
* Value passed the last time [[Filter.execMethod]] was called. If `undefined` this method has not been called yet.
*
* You can use this value to know the current status of any applied filter
*/
lastExecMethod?: {
method: string, params: Object
};
/**
* @hidden
*/
handlers: ObjMap<(event: FilterEvent) => void> = {};
/**
* @hidden
*/
stream: Stream;
/**
* @hidden
*/
constructor(type: string, options: Object) {
this.type = type;
this.options = options;
}
/**
* Executes a filter method. Available methods are specific for each filter
*
* @param method Name of the method
* @param params Parameters of the method
*/
execMethod(method: string, params: Object): Promise<any> {
return new Promise((resolve, reject) => {
console.info('Executing filter method to stream ' + this.stream.streamId);
let stringParams;
if (typeof params !== 'string') {
try {
stringParams = JSON.stringify(params);
} catch (error) {
const errorMsg = "'params' property must be a JSON formatted object";
console.error(errorMsg);
reject(errorMsg);
}
} else {
stringParams = <string>params;
}
this.stream.session.openvidu.sendRequest(
'execFilterMethod',
{ streamId: this.stream.streamId, method, params: stringParams },
(error, response) => {
if (error) {
console.error('Error executing filter method for Stream ' + this.stream.streamId, error);
if (error.code === 401) {
reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to execute a filter method"));
} else {
reject(error);
}
} else {
console.info('Filter method successfully executed on Stream ' + this.stream.streamId);
const oldValue = (<any>Object).assign({}, this.stream.filter);
this.stream.filter.lastExecMethod = { method, params: JSON.parse(stringParams) };
this.stream.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.session, this.stream, 'filter', this.stream.filter, oldValue, 'execFilterMethod')]);
this.stream.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.streamManager, this.stream, 'filter', this.stream.filter, oldValue, 'execFilterMethod')]);
resolve();
}
}
);
});
}
/**
* Subscribe to certain filter event. Available events are specific for each filter
*
* @param eventType Event to which subscribe to.
* @param handler Function to execute upon event dispatched. It receives as parameter a [[FilterEvent]] object
*
* @returns A Promise (to which you can optionally subscribe to) that is resolved if the event listener was successfully attached to the filter and rejected with an Error object if not
*/
addEventListener(eventType: string, handler: (event: FilterEvent) => void): Promise<any> {
return new Promise((resolve, reject) => {
console.info('Adding filter event listener to event ' + eventType + ' to stream ' + this.stream.streamId);
this.stream.session.openvidu.sendRequest(
'addFilterEventListener',
{ streamId: this.stream.streamId, eventType },
(error, response) => {
if (error) {
console.error('Error adding filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error);
if (error.code === 401) {
reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to add a filter event listener"));
} else {
reject(error);
}
} else {
this.handlers[eventType] = handler;
console.info('Filter event listener to event ' + eventType + ' successfully applied on Stream ' + this.stream.streamId);
resolve();
}
}
);
});
}
/**
* Removes certain filter event listener previously set.
*
* @param eventType Event to unsubscribe from.
*
* @returns A Promise (to which you can optionally subscribe to) that is resolved if the event listener was successfully removed from the filter and rejected with an Error object in other case
*/
removeEventListener(eventType: string): Promise<any> {
return new Promise((resolve, reject) => {
console.info('Removing filter event listener to event ' + eventType + ' to stream ' + this.stream.streamId);
this.stream.session.openvidu.sendRequest(
'removeFilterEventListener',
{ streamId: this.stream.streamId, eventType },
(error, response) => {
if (error) {
console.error('Error removing filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error);
if (error.code === 401) {
reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to add a filter event listener"));
} else {
reject(error);
}
} else {
delete this.handlers[eventType];
console.info('Filter event listener to event ' + eventType + ' successfully removed on Stream ' + this.stream.streamId);
resolve();
}
}
);
});
}
}

View File

@ -1,374 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Stream } from './Stream';
import { LocalRecorderState } from '../OpenViduInternal/Enums/LocalRecorderState';
import platform = require('platform');
/**
* @hidden
*/
declare var MediaRecorder: any;
/**
* Easy recording of [[Stream]] objects straightaway from the browser. Initialized with [[OpenVidu.initLocalRecorder]] method
*
* > WARNINGS:
* - Performing browser local recording of **remote streams** may cause some troubles. A long waiting time may be required after calling _LocalRecorder.stop()_ in this case
* - Only Chrome and Firefox support local stream recording
*/
export class LocalRecorder {
state: LocalRecorderState;
private connectionId: string;
private mediaRecorder: any;
private chunks: any[] = [];
private blob: Blob;
private id: string;
private videoPreviewSrc: string;
private videoPreview: HTMLVideoElement;
/**
* @hidden
*/
constructor(private stream: Stream) {
this.connectionId = (!!this.stream.connection) ? this.stream.connection.connectionId : 'default-connection';
this.id = this.stream.streamId + '_' + this.connectionId + '_localrecord';
this.state = LocalRecorderState.READY;
}
/**
* Starts the recording of the Stream. [[state]] property must be `READY`. After method succeeds is set to `RECORDING`
* @returns A Promise (to which you can optionally subscribe to) that is resolved if the recording successfully started and rejected with an Error object if not
*/
record(): Promise<any> {
return new Promise((resolve, reject) => {
try {
if (typeof MediaRecorder === 'undefined') {
console.error('MediaRecorder not supported on your browser. See compatibility in https://caniuse.com/#search=MediaRecorder');
throw (Error('MediaRecorder not supported on your browser. See compatibility in https://caniuse.com/#search=MediaRecorder'));
}
if (this.state !== LocalRecorderState.READY) {
throw (Error('\'LocalRecord.record()\' needs \'LocalRecord.state\' to be \'READY\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.clean()\' or init a new LocalRecorder before'));
}
console.log("Starting local recording of stream '" + this.stream.streamId + "' of connection '" + this.connectionId + "'");
if (typeof MediaRecorder.isTypeSupported === 'function') {
let options;
if (MediaRecorder.isTypeSupported('video/webm;codecs=vp9')) {
options = { mimeType: 'video/webm;codecs=vp9' };
} else if (MediaRecorder.isTypeSupported('video/webm;codecs=h264')) {
options = { mimeType: 'video/webm;codecs=h264' };
} else if (MediaRecorder.isTypeSupported('video/webm;codecs=vp8')) {
options = { mimeType: 'video/webm;codecs=vp8' };
}
console.log('Using mimeType ' + options.mimeType);
this.mediaRecorder = new MediaRecorder(this.stream.getMediaStream(), options);
} else {
console.warn('isTypeSupported is not supported, using default codecs for browser');
this.mediaRecorder = new MediaRecorder(this.stream.getMediaStream());
}
this.mediaRecorder.start(10);
} catch (err) {
reject(err);
}
this.mediaRecorder.ondataavailable = (e) => {
this.chunks.push(e.data);
};
this.mediaRecorder.onerror = (e) => {
console.error('MediaRecorder error: ', e);
};
this.mediaRecorder.onstart = () => {
console.log('MediaRecorder started (state=' + this.mediaRecorder.state + ')');
};
this.mediaRecorder.onstop = () => {
this.onStopDefault();
};
this.mediaRecorder.onpause = () => {
console.log('MediaRecorder paused (state=' + this.mediaRecorder.state + ')');
};
this.mediaRecorder.onresume = () => {
console.log('MediaRecorder resumed (state=' + this.mediaRecorder.state + ')');
};
this.mediaRecorder.onwarning = (e) => {
console.log('MediaRecorder warning: ' + e);
};
this.state = LocalRecorderState.RECORDING;
resolve();
});
}
/**
* Ends the recording of the Stream. [[state]] property must be `RECORDING` or `PAUSED`. After method succeeds is set to `FINISHED`
* @returns A Promise (to which you can optionally subscribe to) that is resolved if the recording successfully stopped and rejected with an Error object if not
*/
stop(): Promise<any> {
return new Promise((resolve, reject) => {
try {
if (this.state === LocalRecorderState.READY || this.state === LocalRecorderState.FINISHED) {
throw (Error('\'LocalRecord.stop()\' needs \'LocalRecord.state\' to be \'RECORDING\' or \'PAUSED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.start()\' before'));
}
this.mediaRecorder.onstop = () => {
this.onStopDefault();
resolve();
};
this.mediaRecorder.stop();
} catch (e) {
reject(e);
}
});
}
/**
* Pauses the recording of the Stream. [[state]] property must be `RECORDING`. After method succeeds is set to `PAUSED`
* @returns A Promise (to which you can optionally subscribe to) that is resolved if the recording was successfully paused and rejected with an Error object if not
*/
pause(): Promise<any> {
return new Promise((resolve, reject) => {
try {
if (this.state !== LocalRecorderState.RECORDING) {
reject(Error('\'LocalRecord.pause()\' needs \'LocalRecord.state\' to be \'RECORDING\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.start()\' or \'LocalRecorder.resume()\' before'));
}
this.mediaRecorder.pause();
this.state = LocalRecorderState.PAUSED;
} catch (error) {
reject(error);
}
});
}
/**
* Resumes the recording of the Stream. [[state]] property must be `PAUSED`. After method succeeds is set to `RECORDING`
* @returns A Promise (to which you can optionally subscribe to) that is resolved if the recording was successfully resumed and rejected with an Error object if not
*/
resume(): Promise<any> {
return new Promise((resolve, reject) => {
try {
if (this.state !== LocalRecorderState.PAUSED) {
throw (Error('\'LocalRecord.resume()\' needs \'LocalRecord.state\' to be \'PAUSED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.pause()\' before'));
}
this.mediaRecorder.resume();
this.state = LocalRecorderState.RECORDING;
} catch (error) {
reject(error);
}
});
}
/**
* Previews the recording, appending a new HTMLVideoElement to element with id `parentId`. [[state]] property must be `FINISHED`
*/
preview(parentElement): HTMLVideoElement {
if (this.state !== LocalRecorderState.FINISHED) {
throw (Error('\'LocalRecord.preview()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before'));
}
this.videoPreview = document.createElement('video');
this.videoPreview.id = this.id;
this.videoPreview.autoplay = true;
if (platform.name === 'Safari') {
this.videoPreview.setAttribute('playsinline', 'true');
}
if (typeof parentElement === 'string') {
const parentElementDom = document.getElementById(parentElement);
if (parentElementDom) {
this.videoPreview = parentElementDom.appendChild(this.videoPreview);
}
} else {
this.videoPreview = parentElement.appendChild(this.videoPreview);
}
this.videoPreview.src = this.videoPreviewSrc;
return this.videoPreview;
}
/**
* Gracefully stops and cleans the current recording (WARNING: it is completely dismissed). Sets [[state]] to `READY` so the recording can start again
*/
clean(): void {
const f = () => {
delete this.blob;
this.chunks = [];
delete this.mediaRecorder;
this.state = LocalRecorderState.READY;
};
if (this.state === LocalRecorderState.RECORDING || this.state === LocalRecorderState.PAUSED) {
this.stop().then(() => f()).catch(() => f());
} else {
f();
}
}
/**
* Downloads the recorded video through the browser. [[state]] property must be `FINISHED`
*/
download(): void {
if (this.state !== LocalRecorderState.FINISHED) {
throw (Error('\'LocalRecord.download()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before'));
} else {
const a: HTMLAnchorElement = document.createElement('a');
a.style.display = 'none';
document.body.appendChild(a);
const url = window.URL.createObjectURL(this.blob);
a.href = url;
a.download = this.id + '.webm';
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
}
}
/**
* Gets the raw Blob file. Methods preview, download, uploadAsBinary and uploadAsMultipartfile use this same file to perform their specific actions. [[state]] property must be `FINISHED`
*/
getBlob(): Blob {
if (this.state !== LocalRecorderState.FINISHED) {
throw (Error('Call \'LocalRecord.stop()\' before getting Blob file'));
} else {
return this.blob;
}
}
/**
* Uploads the recorded video as a binary file performing an HTTP/POST operation to URL `endpoint`. [[state]] property must be `FINISHED`. Optional HTTP headers can be passed as second parameter. For example:
* ```
* var headers = {
* "Cookie": "$Version=1; Skin=new;",
* "Authorization":"Basic QWxhZGpbjpuIHNlctZQ=="
* }
* ```
* @returns A Promise (to which you can optionally subscribe to) that is resolved with the `http.responseText` from server if the operation was successful and rejected with the failed `http.status` if not
*/
uploadAsBinary(endpoint: string, headers?: any): Promise<any> {
return new Promise((resolve, reject) => {
if (this.state !== LocalRecorderState.FINISHED) {
reject(Error('\'LocalRecord.uploadAsBinary()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before'));
} else {
const http = new XMLHttpRequest();
http.open('POST', endpoint, true);
if (typeof headers === 'object') {
for (const key of Object.keys(headers)) {
http.setRequestHeader(key, headers[key]);
}
}
http.onreadystatechange = () => {
if (http.readyState === 4) {
if (http.status.toString().charAt(0) === '2') {
// Success response from server (HTTP status standard: 2XX is success)
resolve(http.responseText);
} else {
reject(http.status);
}
}
};
http.send(this.blob);
}
});
}
/**
* Uploads the recorded video as a multipart file performing an HTTP/POST operation to URL `endpoint`. [[state]] property must be `FINISHED`. Optional HTTP headers can be passed as second parameter. For example:
* ```
* var headers = {
* "Cookie": "$Version=1; Skin=new;",
* "Authorization":"Basic QWxhZGpbjpuIHNlctZQ=="
* }
* ```
* @returns A Promise (to which you can optionally subscribe to) that is resolved with the `http.responseText` from server if the operation was successful and rejected with the failed `http.status` if not:
*/
uploadAsMultipartfile(endpoint: string, headers?: any): Promise<any> {
return new Promise((resolve, reject) => {
if (this.state !== LocalRecorderState.FINISHED) {
reject(Error('\'LocalRecord.uploadAsMultipartfile()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before'));
} else {
const http = new XMLHttpRequest();
http.open('POST', endpoint, true);
if (typeof headers === 'object') {
for (const key of Object.keys(headers)) {
http.setRequestHeader(key, headers[key]);
}
}
const sendable = new FormData();
sendable.append('file', this.blob, this.id + '.webm');
http.onreadystatechange = () => {
if (http.readyState === 4) {
if (http.status.toString().charAt(0) === '2') {
// Success response from server (HTTP status standard: 2XX is success)
resolve(http.responseText);
} else {
reject(http.status);
}
}
};
http.send(sendable);
}
});
}
/* Private methods */
private onStopDefault(): void {
console.log('MediaRecorder stopped (state=' + this.mediaRecorder.state + ')');
this.blob = new Blob(this.chunks, { type: 'video/webm' });
this.chunks = [];
this.videoPreviewSrc = window.URL.createObjectURL(this.blob);
this.state = LocalRecorderState.FINISHED;
}
}

View File

@ -1,773 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { LocalRecorder } from './LocalRecorder';
import { Publisher } from './Publisher';
import { Session } from './Session';
import { Stream } from './Stream';
import { StreamManager } from './StreamManager';
import { StreamPropertyChangedEvent } from '../OpenViduInternal/Events/StreamPropertyChangedEvent';
import { Device } from '../OpenViduInternal/Interfaces/Public/Device';
import { OpenViduAdvancedConfiguration } from '../OpenViduInternal/Interfaces/Public/OpenViduAdvancedConfiguration';
import { PublisherProperties } from '../OpenViduInternal/Interfaces/Public/PublisherProperties';
import { OpenViduError, OpenViduErrorName } from '../OpenViduInternal/Enums/OpenViduError';
import { VideoInsertMode } from '../OpenViduInternal/Enums/VideoInsertMode';
import { VideoElementEvent } from '../OpenViduInternal/Events/VideoElementEvent';
import { StreamManagerEvent } from '../OpenViduInternal/Events/StreamManagerEvent';
import * as screenSharingAuto from '../OpenViduInternal/ScreenSharing/Screen-Capturing-Auto';
import * as screenSharing from '../OpenViduInternal/ScreenSharing/Screen-Capturing';
import EventEmitter = require('wolfy87-eventemitter');
import RpcBuilder = require('../OpenViduInternal/KurentoUtils/kurento-jsonrpc');
import platform = require('platform');
platform['isIonicIos'] = (platform.product === 'iPhone' || platform.product === 'iPad') && platform.ua!!.indexOf('Safari') === -1;
/**
* @hidden
*/
const packageJson = require('../../package.json');
/**
* Entrypoint of OpenVidu Browser library.
* Use it to initialize objects of type [[Session]], [[Publisher]] and [[LocalRecorder]]
*/
export class OpenVidu {
private jsonRpcClient: any;
/**
* @hidden
*/
session: Session;
/**
* @hidden
*/
publishers: Publisher[] = [];
/**
* @hidden
*/
wsUri: string;
/**
* @hidden
*/
httpUri: string;
/**
* @hidden
*/
secret = '';
/**
* @hidden
*/
recorder = false;
/**
* @hidden
*/
iceServers: RTCIceServer[];
/**
* @hidden
*/
role: string;
/**
* @hidden
*/
advancedConfiguration: OpenViduAdvancedConfiguration = {};
/**
* @hidden
*/
webrtcStatsInterval: number = 0;
/**
* @hidden
*/
libraryVersion: string;
/**
* @hidden
*/
ee = new EventEmitter()
constructor() {
this.libraryVersion = packageJson.version;
console.info("'OpenVidu' initialized");
console.info("openvidu-browser version: " + this.libraryVersion);
if (platform.os!!.family === 'iOS' || platform.os!!.family === 'Android') {
// Listen to orientationchange only on mobile devices
(<any>window).addEventListener('orientationchange', () => {
this.publishers.forEach(publisher => {
if (!!publisher.stream && !!publisher.stream.hasVideo && !!publisher.stream.streamManager.videos[0]) {
let attempts = 0;
const oldWidth = publisher.stream.videoDimensions.width;
const oldHeight = publisher.stream.videoDimensions.height;
const getNewVideoDimensions = (): Promise<{ newWidth: number, newHeight: number }> => {
return new Promise((resolve, reject) => {
if (platform['isIonicIos']) {
// iOS Ionic. Limitation: must get new dimensions from an existing video element already inserted into DOM
resolve({
newWidth: publisher.stream.streamManager.videos[0].video.videoWidth,
newHeight: publisher.stream.streamManager.videos[0].video.videoHeight
});
} else {
// Rest of platforms
// New resolution got from different places for Chrome and Firefox. Chrome needs a videoWidth and videoHeight of a videoElement.
// Firefox needs getSettings from the videoTrack
const firefoxSettings = publisher.stream.getMediaStream().getVideoTracks()[0].getSettings();
const newWidth = <number>((platform.name!!.toLowerCase().indexOf('firefox') !== -1) ? firefoxSettings.width : publisher.videoReference.videoWidth);
const newHeight = <number>((platform.name!!.toLowerCase().indexOf('firefox') !== -1) ? firefoxSettings.height : publisher.videoReference.videoHeight);
resolve({ newWidth, newHeight });
}
});
};
const repeatUntilChange = setInterval(() => {
getNewVideoDimensions().then(newDimensions => {
sendStreamPropertyChangedEvent(oldWidth, oldHeight, newDimensions.newWidth, newDimensions.newHeight);
});
}, 75);
const sendStreamPropertyChangedEvent = (oldWidth, oldHeight, newWidth, newHeight) => {
attempts++;
if (attempts > 10) {
clearTimeout(repeatUntilChange);
}
if (newWidth !== oldWidth || newHeight !== oldHeight) {
publisher.stream.videoDimensions = {
width: newWidth || 0,
height: newHeight || 0
};
this.sendRequest(
'streamPropertyChanged',
{
streamId: publisher.stream.streamId,
property: 'videoDimensions',
newValue: JSON.stringify(publisher.stream.videoDimensions),
reason: 'deviceRotated'
},
(error, response) => {
if (error) {
console.error("Error sending 'streamPropertyChanged' event", error);
} else {
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, publisher.stream, 'videoDimensions', publisher.stream.videoDimensions, { width: oldWidth, height: oldHeight }, 'deviceRotated')]);
publisher.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(publisher, publisher.stream, 'videoDimensions', publisher.stream.videoDimensions, { width: oldWidth, height: oldHeight }, 'deviceRotated')]);
}
});
clearTimeout(repeatUntilChange);
}
};
}
});
});
}
}
/**
* Returns new session
*/
initSession(): Session {
this.session = new Session(this);
return this.session;
}
initPublisher(targetElement: string | HTMLElement): Publisher;
initPublisher(targetElement: string | HTMLElement, properties: PublisherProperties): Publisher;
initPublisher(targetElement: string | HTMLElement, completionHandler: (error: Error | undefined) => void): Publisher;
initPublisher(targetElement: string | HTMLElement, properties: PublisherProperties, completionHandler: (error: Error | undefined) => void): Publisher;
/**
* Returns a new publisher
*
* #### Events dispatched
*
* The [[Publisher]] object will dispatch an `accessDialogOpened` event, only if the pop-up shown by the browser to request permissions for the camera is opened. You can use this event to alert the user about granting permissions
* for your website. An `accessDialogClosed` event will also be dispatched after user clicks on "Allow" or "Block" in the pop-up.
*
* The [[Publisher]] object will dispatch an `accessAllowed` or `accessDenied` event once it has been granted access to the requested input devices or not.
*
* The [[Publisher]] object will dispatch a `videoElementCreated` event once a HTML video element has been added to DOM (only if you
* [let OpenVidu take care of the video players](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). See [[VideoElementEvent]] to learn more.
*
* The [[Publisher]] object will dispatch a `streamPlaying` event once the local streams starts playing. See [[StreamManagerEvent]] to learn more.
*
* @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher will be inserted (see [[PublisherProperties.insertMode]]). If *null* or *undefined* no default video will be created for this Publisher.
* You can always call method [[Publisher.addVideoElement]] or [[Publisher.createVideoElement]] to manage the video elements on your own (see [Manage video players](/docs/how-do-i/manage-videos) section)
* @param completionHandler `error` parameter is null if `initPublisher` succeeds, and is defined if it fails.
* `completionHandler` function is called before the Publisher dispatches an `accessAllowed` or an `accessDenied` event
*/
initPublisher(targetElement: string | HTMLElement, param2?, param3?): Publisher {
let properties: PublisherProperties;
if (!!param2 && (typeof param2 !== 'function')) {
// Matches 'initPublisher(targetElement, properties)' or 'initPublisher(targetElement, properties, completionHandler)'
properties = (<PublisherProperties>param2);
properties = {
audioSource: (typeof properties.audioSource !== 'undefined') ? properties.audioSource : undefined,
frameRate: (typeof MediaStreamTrack !== 'undefined' && properties.videoSource instanceof MediaStreamTrack) ? undefined : ((typeof properties.frameRate !== 'undefined') ? properties.frameRate : undefined),
insertMode: (typeof properties.insertMode !== 'undefined') ? ((typeof properties.insertMode === 'string') ? VideoInsertMode[properties.insertMode] : properties.insertMode) : VideoInsertMode.APPEND,
mirror: (typeof properties.mirror !== 'undefined') ? properties.mirror : true,
publishAudio: (typeof properties.publishAudio !== 'undefined') ? properties.publishAudio : true,
publishVideo: (typeof properties.publishVideo !== 'undefined') ? properties.publishVideo : true,
resolution: (typeof MediaStreamTrack !== 'undefined' && properties.videoSource instanceof MediaStreamTrack) ? undefined : ((typeof properties.resolution !== 'undefined') ? properties.resolution : '640x480'),
videoSource: (typeof properties.videoSource !== 'undefined') ? properties.videoSource : undefined,
filter: properties.filter
};
} else {
// Matches 'initPublisher(targetElement)' or 'initPublisher(targetElement, completionHandler)'
properties = {
insertMode: VideoInsertMode.APPEND,
mirror: true,
publishAudio: true,
publishVideo: true,
resolution: '640x480'
};
}
const publisher: Publisher = new Publisher(targetElement, properties, this);
let completionHandler: (error: Error | undefined) => void;
if (!!param2 && (typeof param2 === 'function')) {
completionHandler = param2;
} else if (!!param3) {
completionHandler = param3;
}
publisher.initialize()
.then(() => {
if (completionHandler !== undefined) {
completionHandler(undefined);
}
publisher.emitEvent('accessAllowed', []);
}).catch((error) => {
if (completionHandler !== undefined) {
completionHandler(error);
}
publisher.emitEvent('accessDenied', [error]);
});
this.publishers.push(publisher);
return publisher;
}
/**
* Promisified version of [[OpenVidu.initPublisher]]
*
* > WARNING: events `accessDialogOpened` and `accessDialogClosed` will not be dispatched if using this method instead of [[OpenVidu.initPublisher]]
*/
initPublisherAsync(targetElement: string | HTMLElement): Promise<Publisher>;
initPublisherAsync(targetElement: string | HTMLElement, properties: PublisherProperties): Promise<Publisher>;
initPublisherAsync(targetElement: string | HTMLElement, properties?: PublisherProperties): Promise<Publisher> {
return new Promise<Publisher>((resolve, reject) => {
let publisher: Publisher;
const callback = (error: Error) => {
if (!!error) {
reject(error);
} else {
resolve(publisher);
}
};
if (!!properties) {
publisher = this.initPublisher(targetElement, properties, callback);
} else {
publisher = this.initPublisher(targetElement, callback);
}
});
}
/**
* Returns a new local recorder for recording streams straight away from the browser
* @param stream Stream to record
*/
initLocalRecorder(stream: Stream): LocalRecorder {
return new LocalRecorder(stream);
}
/**
* Checks if the browser supports OpenVidu
* @returns 1 if the browser supports OpenVidu, 0 otherwise
*/
checkSystemRequirements(): number {
const browser = platform.name;
const family = platform.os!!.family;
const userAgent = !!platform.ua ? platform.ua : navigator.userAgent;
// Reject iPhones and iPads if not Safari ('Safari' also covers Ionic for iOS)
if (family === 'iOS' && (browser !== 'Safari' || userAgent.indexOf('CriOS') !== -1 || userAgent.indexOf('FxiOS') !== -1)) {
return 0;
}
// Accept: Chrome (desktop and Android), Firefox (desktop and Android), Opera (desktop and Android),
// Safari (OSX and iOS), Ionic (Android and iOS)
if (
(browser !== 'Safari') &&
(browser !== 'Chrome') && (browser !== 'Chrome Mobile') &&
(browser !== 'Firefox') && (browser !== 'Firefox Mobile') &&
(browser !== 'Opera') && (browser !== 'Opera Mobile') &&
(browser !== 'Android Browser') && (browser !== 'Electron')
) {
return 0;
} else {
return 1;
}
}
/**
* Checks if the browser supports screen-sharing. Desktop Chrome, Firefox and Opera support screen-sharing
* @returns 1 if the browser supports screen-sharing, 0 otherwise
*/
checkScreenSharingCapabilities(): number {
const browser = platform.name;
const family = platform.os!!.family;
// Reject mobile devices
if (family === 'iOS' || family === 'Android') {
return 0;
}
if ((browser !== 'Chrome') && (browser !== 'Firefox') && (browser !== 'Opera') && (browser !== 'Electron')) {
return 0;
} else {
return 1;
}
}
/**
* Collects information about the media input devices available on the system. You can pass property `deviceId` of a [[Device]] object as value of `audioSource` or `videoSource` properties in [[initPublisher]] method
*/
getDevices(): Promise<Device[]> {
return new Promise<Device[]>((resolve, reject) => {
navigator.mediaDevices.enumerateDevices().then(deviceInfos => {
const devices: Device[] = [];
deviceInfos.forEach(deviceInfo => {
if (deviceInfo.kind === 'audioinput' || deviceInfo.kind === 'videoinput') {
devices.push({
kind: deviceInfo.kind,
deviceId: deviceInfo.deviceId,
label: deviceInfo.label
});
}
});
resolve(devices);
}).catch((error) => {
console.error('Error getting devices', error);
reject(error);
});
});
}
/**
* Get a MediaStream object that you can customize before calling [[initPublisher]] (pass _MediaStreamTrack_ property of the _MediaStream_ value resolved by the Promise as `audioSource` or `videoSource` properties in [[initPublisher]])
*
* Parameter `options` is the same as in [[initPublisher]] second parameter (of type [[PublisherProperties]]), but only the following properties will be applied: `audioSource`, `videoSource`, `frameRate`, `resolution`
*
* To customize the Publisher's video, the API for HTMLCanvasElement is very useful. For example, to get a black-and-white video at 10 fps and HD resolution with no sound:
* ```
* var OV = new OpenVidu();
* var FRAME_RATE = 10;
*
* OV.getUserMedia({
* audioSource: false;
* videoSource: undefined,
* resolution: '1280x720',
* frameRate: FRAME_RATE
* })
* .then(mediaStream => {
*
* var videoTrack = mediaStream.getVideoTracks()[0];
* var video = document.createElement('video');
* video.srcObject = new MediaStream([videoTrack]);
*
* var canvas = document.createElement('canvas');
* var ctx = canvas.getContext('2d');
* ctx.filter = 'grayscale(100%)';
*
* video.addEventListener('play', () => {
* var loop = () => {
* if (!video.paused && !video.ended) {
* ctx.drawImage(video, 0, 0, 300, 170);
* setTimeout(loop, 1000/ FRAME_RATE); // Drawing at 10 fps
* }
* };
* loop();
* });
* video.play();
*
* var grayVideoTrack = canvas.captureStream(FRAME_RATE).getVideoTracks()[0];
* var publisher = this.OV.initPublisher(
* myHtmlTarget,
* {
* audioSource: false,
* videoSource: grayVideoTrack
* });
* });
* ```
*/
getUserMedia(options: PublisherProperties): Promise<MediaStream> {
return new Promise<MediaStream>((resolve, reject) => {
this.generateMediaConstraints(options)
.then(constraints => {
navigator.mediaDevices.getUserMedia(constraints)
.then(mediaStream => {
resolve(mediaStream);
})
.catch(error => {
let errorName: OpenViduErrorName;
const errorMessage = error.toString();
if (!(options.videoSource === 'screen')) {
errorName = OpenViduErrorName.DEVICE_ACCESS_DENIED;
} else {
errorName = OpenViduErrorName.SCREEN_CAPTURE_DENIED;
}
reject(new OpenViduError(errorName, errorMessage));
});
})
.catch((error: OpenViduError) => {
reject(error);
});
});
}
/* tslint:disable:no-empty */
/**
* Disable all logging except error level
*/
enableProdMode(): void {
console.log = () => { };
console.debug = () => { };
console.info = () => { };
console.warn = () => { };
}
/* tslint:enable:no-empty */
/**
* Set OpenVidu advanced configuration options. Currently `configuration` is an object with the following optional properties (see [[OpenViduAdvancedConfiguration]] for more details):
* - `iceServers`: set custom STUN/TURN servers to be used by OpenVidu Browser
* - `screenShareChromeExtension`: url to a custom screen share extension for Chrome to be used instead of the default one, based on ours [https://github.com/OpenVidu/openvidu-screen-sharing-chrome-extension](https://github.com/OpenVidu/openvidu-screen-sharing-chrome-extension)
* - `publisherSpeakingEventsOptions`: custom configuration for the [[PublisherSpeakingEvent]] feature
*/
setAdvancedConfiguration(configuration: OpenViduAdvancedConfiguration): void {
this.advancedConfiguration = configuration;
}
/* Hidden methods */
/**
* @hidden
*/
generateMediaConstraints(publisherProperties: PublisherProperties): Promise<MediaStreamConstraints> {
return new Promise<MediaStreamConstraints>((resolve, reject) => {
let audio, video;
if (publisherProperties.audioSource === null || publisherProperties.audioSource === false) {
audio = false;
} else if (publisherProperties.audioSource === undefined) {
audio = true;
} else {
audio = publisherProperties.audioSource;
}
if (publisherProperties.videoSource === null || publisherProperties.videoSource === false) {
video = false;
} else {
video = {
height: {
ideal: 480
},
width: {
ideal: 640
}
};
}
const mediaConstraints: MediaStreamConstraints = {
audio,
video
};
if (typeof mediaConstraints.audio === 'string') {
mediaConstraints.audio = { deviceId: { exact: mediaConstraints.audio } };
}
if (mediaConstraints.video) {
if (!!publisherProperties.resolution) {
const widthAndHeight = publisherProperties.resolution.toLowerCase().split('x');
const width = Number(widthAndHeight[0]);
const height = Number(widthAndHeight[1]);
(mediaConstraints.video as any).width.ideal = width;
(mediaConstraints.video as any).height.ideal = height;
}
if (!!publisherProperties.frameRate) {
(mediaConstraints.video as any).frameRate = { ideal: publisherProperties.frameRate };
}
if (!!publisherProperties.videoSource && typeof publisherProperties.videoSource === 'string') {
if (publisherProperties.videoSource === 'screen' ||
(platform.name!.indexOf('Firefox') !== -1 && publisherProperties.videoSource === 'window') ||
(platform.name === 'Electron' && publisherProperties.videoSource.startsWith('screen:'))) {
if (!this.checkScreenSharingCapabilities()) {
const error = new OpenViduError(OpenViduErrorName.SCREEN_SHARING_NOT_SUPPORTED, 'You can only screen share in desktop Chrome, Firefox or Opera. Detected browser: ' + platform.name);
console.error(error);
reject(error);
} else {
if (platform.name === 'Electron') {
const prefix = "screen:";
const videoSourceString: string = publisherProperties.videoSource;
const electronScreenId = videoSourceString.substr(videoSourceString.lastIndexOf(prefix) + prefix.length);
(<any>mediaConstraints['video']) = {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: electronScreenId
}
};
resolve(mediaConstraints);
} else {
if (!!this.advancedConfiguration.screenShareChromeExtension && !(platform.name!.indexOf('Firefox') !== -1) && !navigator.mediaDevices['getDisplayMedia']) {
// Custom screen sharing extension for Chrome (and Opera) and no support for MediaDevices.getDisplayMedia()
screenSharing.getScreenConstraints((error, screenConstraints) => {
if (!!error || !!screenConstraints.mandatory && screenConstraints.mandatory.chromeMediaSource === 'screen') {
if (error === 'permission-denied' || error === 'PermissionDeniedError') {
const error = new OpenViduError(OpenViduErrorName.SCREEN_CAPTURE_DENIED, 'You must allow access to one window of your desktop');
console.error(error);
reject(error);
} else {
const extensionId = this.advancedConfiguration.screenShareChromeExtension!.split('/').pop()!!.trim();
screenSharing.getChromeExtensionStatus(extensionId, (status) => {
if (status === 'installed-disabled') {
const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_DISABLED, 'You must enable the screen extension');
console.error(error);
reject(error);
}
if (status === 'not-installed') {
const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED, (<string>this.advancedConfiguration.screenShareChromeExtension));
console.error(error);
reject(error);
}
});
}
} else {
mediaConstraints.video = screenConstraints;
resolve(mediaConstraints);
}
});
} else {
if (navigator.mediaDevices['getDisplayMedia']) {
// getDisplayMedia support (Chrome >= 72, Firefox >= 52)
resolve(mediaConstraints);
} else {
// Default screen sharing extension for Chrome/Opera, or is Firefox < 66
const firefoxString = platform.name!.indexOf('Firefox') !== -1 ? publisherProperties.videoSource : undefined;
screenSharingAuto.getScreenId(firefoxString, (error, sourceId, screenConstraints) => {
if (!!error) {
if (error === 'not-installed') {
const extensionUrl = !!this.advancedConfiguration.screenShareChromeExtension ? this.advancedConfiguration.screenShareChromeExtension :
'https://chrome.google.com/webstore/detail/openvidu-screensharing/lfcgfepafnobdloecchnfaclibenjold';
const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED, extensionUrl);
console.error(error);
reject(error);
} else if (error === 'installed-disabled') {
const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_DISABLED, 'You must enable the screen extension');
console.error(error);
reject(error);
} else if (error === 'permission-denied') {
const error = new OpenViduError(OpenViduErrorName.SCREEN_CAPTURE_DENIED, 'You must allow access to one window of your desktop');
console.error(error);
reject(error);
}
} else {
mediaConstraints.video = screenConstraints.video;
resolve(mediaConstraints);
}
});
}
}
publisherProperties.videoSource = 'screen';
}
}
} else {
// tslint:disable-next-line:no-string-literal
mediaConstraints.video['deviceId'] = { exact: publisherProperties.videoSource };
resolve(mediaConstraints);
}
} else {
resolve(mediaConstraints);
}
} else {
resolve(mediaConstraints);
}
});
}
/**
* @hidden
*/
startWs(onConnectSucces: (error: Error) => void): void {
const config = {
heartbeat: 5000,
sendCloseMessage: false,
ws: {
uri: this.wsUri,
useSockJS: false,
onconnected: onConnectSucces,
ondisconnect: this.disconnectCallback.bind(this),
onreconnecting: this.reconnectingCallback.bind(this),
onreconnected: this.reconnectedCallback.bind(this)
},
rpc: {
requestTimeout: 10000,
participantJoined: this.session.onParticipantJoined.bind(this.session),
participantPublished: this.session.onParticipantPublished.bind(this.session),
participantUnpublished: this.session.onParticipantUnpublished.bind(this.session),
participantLeft: this.session.onParticipantLeft.bind(this.session),
participantEvicted: this.session.onParticipantEvicted.bind(this.session),
recordingStarted: this.session.onRecordingStarted.bind(this.session),
recordingStopped: this.session.onRecordingStopped.bind(this.session),
sendMessage: this.session.onNewMessage.bind(this.session),
streamPropertyChanged: this.session.onStreamPropertyChanged.bind(this.session),
filterEventDispatched: this.session.onFilterEventDispatched.bind(this.session),
iceCandidate: this.session.recvIceCandidate.bind(this.session),
mediaError: this.session.onMediaError.bind(this.session)
}
};
this.jsonRpcClient = new RpcBuilder.clients.JsonRpcClient(config);
}
/**
* @hidden
*/
closeWs(): void {
this.jsonRpcClient.close(4102, "Connection closed by client");
}
/**
* @hidden
*/
sendRequest(method: string, params: any, callback?): void {
if (params && params instanceof Function) {
callback = params;
params = {};
}
console.debug('Sending request: {method:"' + method + '", params: ' + JSON.stringify(params) + '}');
this.jsonRpcClient.send(method, params, callback);
}
/**
* @hidden
*/
getWsUri(): string {
return this.wsUri;
}
/**
* @hidden
*/
getSecret(): string {
return this.secret;
}
/**
* @hidden
*/
getRecorder(): boolean {
return this.recorder;
}
/* Private methods */
private disconnectCallback(): void {
console.warn('Websocket connection lost');
if (this.isRoomAvailable()) {
this.session.onLostConnection('networkDisconnect');
} else {
alert('Connection error. Please reload page.');
}
}
private reconnectingCallback(): void {
console.warn('Websocket connection lost (reconnecting)');
if (!this.isRoomAvailable()) {
alert('Connection error. Please reload page.');
}
}
private reconnectedCallback(): void {
console.warn('Websocket reconnected');
if (this.isRoomAvailable()) {
this.sendRequest('connect', { sessionId: this.session.connection.rpcSessionId }, (error, response) => {
if (!!error) {
console.error(error);
this.session.onLostConnection("networkDisconnect");
this.jsonRpcClient.close(4101, "Reconnection fault");
} else {
this.jsonRpcClient.resetPing();
this.session.onRecoveredConnection();
}
});
} else {
alert('Connection error. Please reload page.');
}
}
private isRoomAvailable(): boolean {
if (this.session !== undefined && this.session instanceof Session) {
return true;
} else {
console.warn('Session instance not found');
return false;
}
}
}

View File

@ -1,654 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { OpenVidu } from './OpenVidu';
import { Session } from './Session';
import { Stream } from './Stream';
import { StreamManager } from './StreamManager';
import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher';
import { PublisherProperties } from '../OpenViduInternal/Interfaces/Public/PublisherProperties';
import { Event } from '../OpenViduInternal/Events/Event';
import { StreamEvent } from '../OpenViduInternal/Events/StreamEvent';
import { StreamPropertyChangedEvent } from '../OpenViduInternal/Events/StreamPropertyChangedEvent';
import { VideoElementEvent } from '../OpenViduInternal/Events/VideoElementEvent';
import { OpenViduError, OpenViduErrorName } from '../OpenViduInternal/Enums/OpenViduError';
import { VideoInsertMode } from '../OpenViduInternal/Enums/VideoInsertMode';
import platform = require('platform');
/**
* Packs local media streams. Participants can publish it to a session. Initialized with [[OpenVidu.initPublisher]] method
*/
export class Publisher extends StreamManager {
/**
* Whether the Publisher has been granted access to the requested input devices or not
*/
accessAllowed = false;
/**
* Whether you have called [[Publisher.subscribeToRemote]] with value `true` or `false` (*false* by default)
*/
isSubscribedToRemote = false;
/**
* The [[Session]] to which the Publisher belongs
*/
session: Session; // Initialized by Session.publish(Publisher)
private accessDenied = false;
private properties: PublisherProperties;
private permissionDialogTimeout: NodeJS.Timer;
/**
* @hidden
*/
openvidu: OpenVidu;
/**
* @hidden
*/
videoReference: HTMLVideoElement;
/**
* @hidden
*/
screenShareResizeInterval: NodeJS.Timer;
/**
* @hidden
*/
IEAdapter: any;
/**
* @hidden
*/
constructor(targEl: string | HTMLElement, properties: PublisherProperties, openvidu: OpenVidu) {
super(new Stream((!!openvidu.session) ? openvidu.session : new Session(openvidu), { publisherProperties: properties, mediaConstraints: {} }), targEl);
this.properties = properties;
this.openvidu = openvidu;
this.stream.ee.on('local-stream-destroyed', (reason: string) => {
this.stream.isLocalStreamPublished = false;
const streamEvent = new StreamEvent(true, this, 'streamDestroyed', this.stream, reason);
this.emitEvent('streamDestroyed', [streamEvent]);
streamEvent.callDefaultBehavior();
});
}
/**
* Publish or unpublish the audio stream (if available). Calling this method twice in a row passing same value will have no effect
*
* #### Events dispatched
*
* > _Only if `Session.publish(Publisher)` has been called for this Publisher_
*
* The [[Session]] object of the local participant will dispatch a `streamPropertyChanged` event with `changedProperty` set to `"audioActive"` and `reason` set to `"publishAudio"`
* The [[Publisher]] object of the local participant will also dispatch the exact same event
*
* The [[Session]] object of every other participant connected to the session will dispatch a `streamPropertyChanged` event with `changedProperty` set to `"audioActive"` and `reason` set to `"publishAudio"`
* The respective [[Subscriber]] object of every other participant receiving this Publisher's stream will also dispatch the exact same event
*
* See [[StreamPropertyChangedEvent]] to learn more.
*
* @param value `true` to publish the audio stream, `false` to unpublish it
*/
publishAudio(value: boolean): void {
if (this.stream.audioActive !== value) {
this.stream.getMediaStream().getAudioTracks().forEach((track) => {
track.enabled = value;
});
if (!!this.session && !!this.stream.streamId) {
this.session.openvidu.sendRequest(
'streamPropertyChanged',
{
streamId: this.stream.streamId,
property: 'audioActive',
newValue: value,
reason: 'publishAudio'
},
(error, response) => {
if (error) {
console.error("Error sending 'streamPropertyChanged' event", error);
} else {
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this.stream, 'audioActive', value, !value, 'publishAudio')]);
this.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this, this.stream, 'audioActive', value, !value, 'publishAudio')]);
}
});
}
this.stream.audioActive = value;
console.info("'Publisher' has " + (value ? 'published' : 'unpublished') + ' its audio stream');
}
}
/**
* Publish or unpublish the video stream (if available). Calling this method twice in a row passing same value will have no effect
*
* #### Events dispatched
*
* > _Only if `Session.publish(Publisher)` has been called for this Publisher_
*
* The [[Session]] object of the local participant will dispatch a `streamPropertyChanged` event with `changedProperty` set to `"videoActive"` and `reason` set to `"publishVideo"`
* The [[Publisher]] object of the local participant will also dispatch the exact same event
*
* The [[Session]] object of every other participant connected to the session will dispatch a `streamPropertyChanged` event with `changedProperty` set to `"videoActive"` and `reason` set to `"publishVideo"`
* The respective [[Subscriber]] object of every other participant receiving this Publisher's stream will also dispatch the exact same event
*
* See [[StreamPropertyChangedEvent]] to learn more.
*
* @param value `true` to publish the video stream, `false` to unpublish it
*/
publishVideo(value: boolean): void {
if (this.stream.videoActive !== value) {
this.stream.getMediaStream().getVideoTracks().forEach((track) => {
track.enabled = value;
});
if (!!this.session && !!this.stream.streamId) {
this.session.openvidu.sendRequest(
'streamPropertyChanged',
{
streamId: this.stream.streamId,
property: 'videoActive',
newValue: value,
reason: 'publishVideo'
},
(error, response) => {
if (error) {
console.error("Error sending 'streamPropertyChanged' event", error);
} else {
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this.stream, 'videoActive', value, !value, 'publishVideo')]);
this.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this, this.stream, 'videoActive', value, !value, 'publishVideo')]);
}
});
}
this.stream.videoActive = value;
console.info("'Publisher' has " + (value ? 'published' : 'unpublished') + ' its video stream');
}
}
/**
* Call this method before [[Session.publish]] if you prefer to subscribe to your Publisher's remote stream instead of using the local stream, as any other user would do.
*/
subscribeToRemote(value?: boolean): void {
value = (value !== undefined) ? value : true;
this.isSubscribedToRemote = value;
this.stream.subscribeToMyRemote(value);
}
/**
* See [[EventDispatcher.on]]
*/
on(type: string, handler: (event: Event) => void): EventDispatcher {
super.on(type, handler);
if (type === 'streamCreated') {
if (!!this.stream && this.stream.isLocalStreamPublished) {
this.emitEvent('streamCreated', [new StreamEvent(false, this, 'streamCreated', this.stream, '')]);
} else {
this.stream.ee.on('stream-created-by-publisher', () => {
this.emitEvent('streamCreated', [new StreamEvent(false, this, 'streamCreated', this.stream, '')]);
});
}
}
if (type === 'remoteVideoPlaying') {
if (this.stream.displayMyRemote() && this.videos[0] && this.videos[0].video &&
this.videos[0].video.currentTime > 0 &&
this.videos[0].video.paused === false &&
this.videos[0].video.ended === false &&
this.videos[0].video.readyState === 4) {
this.emitEvent('remoteVideoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'remoteVideoPlaying')]);
}
}
if (type === 'accessAllowed') {
if (this.accessAllowed) {
this.emitEvent('accessAllowed', []);
}
}
if (type === 'accessDenied') {
if (this.accessDenied) {
this.emitEvent('accessDenied', []);
}
}
return this;
}
/**
* See [[EventDispatcher.once]]
*/
once(type: string, handler: (event: Event) => void): Publisher {
super.once(type, handler);
if (type === 'streamCreated') {
if (!!this.stream && this.stream.isLocalStreamPublished) {
this.emitEvent('streamCreated', [new StreamEvent(false, this, 'streamCreated', this.stream, '')]);
} else {
this.stream.ee.once('stream-created-by-publisher', () => {
this.emitEvent('streamCreated', [new StreamEvent(false, this, 'streamCreated', this.stream, '')]);
});
}
}
if (type === 'remoteVideoPlaying') {
if (this.stream.displayMyRemote() && this.videos[0] && this.videos[0].video &&
this.videos[0].video.currentTime > 0 &&
this.videos[0].video.paused === false &&
this.videos[0].video.ended === false &&
this.videos[0].video.readyState === 4) {
this.emitEvent('remoteVideoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'remoteVideoPlaying')]);
}
}
if (type === 'accessAllowed') {
if (this.accessAllowed) {
this.emitEvent('accessAllowed', []);
}
}
if (type === 'accessDenied') {
if (this.accessDenied) {
this.emitEvent('accessDenied', []);
}
}
return this;
}
/* Hidden methods */
/**
* @hidden
*/
initialize(): Promise<any> {
return new Promise((resolve, reject) => {
let constraints: MediaStreamConstraints = {};
let constraintsAux: MediaStreamConstraints = {};
const timeForDialogEvent = 1250;
let startTime;
const errorCallback = (openViduError: OpenViduError) => {
this.accessDenied = true;
this.accessAllowed = false;
reject(openViduError);
};
const successCallback = (mediaStream: MediaStream) => {
this.accessAllowed = true;
this.accessDenied = false;
if (typeof MediaStreamTrack !== 'undefined' && this.properties.audioSource instanceof MediaStreamTrack) {
mediaStream.removeTrack(mediaStream.getAudioTracks()[0]);
mediaStream.addTrack((<MediaStreamTrack>this.properties.audioSource));
}
if (typeof MediaStreamTrack !== 'undefined' && this.properties.videoSource instanceof MediaStreamTrack) {
mediaStream.removeTrack(mediaStream.getVideoTracks()[0]);
mediaStream.addTrack((<MediaStreamTrack>this.properties.videoSource));
}
// Apply PublisherProperties.publishAudio and PublisherProperties.publishVideo
if (!!mediaStream.getAudioTracks()[0]) {
const enabled = (this.stream.audioActive !== undefined && this.stream.audioActive !== null) ? this.stream.audioActive : !!this.stream.outboundStreamOpts.publisherProperties.publishAudio;
mediaStream.getAudioTracks()[0].enabled = enabled;
}
if (!!mediaStream.getVideoTracks()[0]) {
const enabled = (this.stream.videoActive !== undefined && this.stream.videoActive !== null) ? this.stream.videoActive : !!this.stream.outboundStreamOpts.publisherProperties.publishVideo;
mediaStream.getVideoTracks()[0].enabled = enabled;
}
this.videoReference = document.createElement('video');
if (platform.name === 'Safari') {
this.videoReference.setAttribute('playsinline', 'true');
}
this.stream.setMediaStream(mediaStream);
if (!!this.firstVideoElement) {
this.createVideoElement(this.firstVideoElement.targetElement, <VideoInsertMode>this.properties.insertMode);
}
this.videoReference.srcObject = mediaStream;
if (!this.stream.displayMyRemote()) {
// When we are subscribed to our remote we don't still set the MediaStream object in the video elements to
// avoid early 'streamPlaying' event
this.stream.updateMediaStreamInVideos();
}
delete this.firstVideoElement;
if (this.stream.isSendVideo()) {
if (!this.stream.isSendScreen()) {
if (platform['isIonicIos'] || platform.name === 'Safari') {
// iOS Ionic or Safari. Limitation: cannot set videoDimensions directly, as the videoReference is not loaded
// if not added to DOM. Must add it to DOM and wait for videoWidth and videoHeight properties to be defined
this.videoReference.style.display = 'none';
document.body.appendChild(this.videoReference);
const videoDimensionsSet = () => {
this.stream.videoDimensions = {
width: this.videoReference.videoWidth,
height: this.videoReference.videoHeight
};
this.stream.isLocalStreamReadyToPublish = true;
this.stream.ee.emitEvent('stream-ready-to-publish', []);
document.body.removeChild(this.videoReference);
};
let interval;
this.videoReference.addEventListener('loadedmetadata', () => {
if (this.videoReference.videoWidth === 0) {
interval = setInterval(() => {
if (this.videoReference.videoWidth !== 0) {
clearInterval(interval);
videoDimensionsSet();
}
}, 40);
} else {
videoDimensionsSet();
}
});
} else {
// Rest of platforms
// With no screen share, video dimension can be set directly from MediaStream (getSettings)
// Orientation must be checked for mobile devices (width and height are reversed)
const { width, height } = mediaStream.getVideoTracks()[0].getSettings();
if ((platform.os!!.family === 'iOS' || platform.os!!.family === 'Android') && (window.innerHeight > window.innerWidth)) {
// Mobile portrait mode
this.stream.videoDimensions = {
width: height || 0,
height: width || 0
};
} else {
this.stream.videoDimensions = {
width: width || 0,
height: height || 0
};
}
this.stream.isLocalStreamReadyToPublish = true;
this.stream.ee.emitEvent('stream-ready-to-publish', []);
}
} else {
// With screen share, video dimension must be got from a video element (onloadedmetadata event)
this.videoReference.addEventListener('loadedmetadata', () => {
this.stream.videoDimensions = {
width: this.videoReference.videoWidth,
height: this.videoReference.videoHeight
};
this.screenShareResizeInterval = setInterval(() => {
const firefoxSettings = mediaStream.getVideoTracks()[0].getSettings();
const newWidth = (platform.name === 'Chrome' || platform.name === 'Opera') ? this.videoReference.videoWidth : firefoxSettings.width;
const newHeight = (platform.name === 'Chrome' || platform.name === 'Opera') ? this.videoReference.videoHeight : firefoxSettings.height;
if (this.stream.isLocalStreamPublished &&
(newWidth !== this.stream.videoDimensions.width ||
newHeight !== this.stream.videoDimensions.height)) {
const oldValue = { width: this.stream.videoDimensions.width, height: this.stream.videoDimensions.height };
this.stream.videoDimensions = {
width: newWidth || 0,
height: newHeight || 0
};
this.session.openvidu.sendRequest(
'streamPropertyChanged',
{
streamId: this.stream.streamId,
property: 'videoDimensions',
newValue: JSON.stringify(this.stream.videoDimensions),
reason: 'screenResized'
},
(error, response) => {
if (error) {
console.error("Error sending 'streamPropertyChanged' event", error);
} else {
this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this.stream, 'videoDimensions', this.stream.videoDimensions, oldValue, 'screenResized')]);
this.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this, this.stream, 'videoDimensions', this.stream.videoDimensions, oldValue, 'screenResized')]);
}
});
}
}, 500);
this.stream.isLocalStreamReadyToPublish = true;
this.stream.ee.emitEvent('stream-ready-to-publish', []);
});
}
} else {
this.stream.isLocalStreamReadyToPublish = true;
this.stream.ee.emitEvent('stream-ready-to-publish', []);
}
resolve();
};
const getMediaSuccess = (mediaStream: MediaStream, definedAudioConstraint) => {
this.clearPermissionDialogTimer(startTime, timeForDialogEvent);
if (this.stream.isSendScreen() && this.stream.isSendAudio()) {
// When getting desktop as user media audio constraint must be false. Now we can ask for it if required
constraintsAux.audio = definedAudioConstraint;
constraintsAux.video = false;
startTime = Date.now();
this.setPermissionDialogTimer(timeForDialogEvent);
navigator.mediaDevices.getUserMedia(constraintsAux)
.then(audioOnlyStream => {
this.clearPermissionDialogTimer(startTime, timeForDialogEvent);
mediaStream.addTrack(audioOnlyStream.getAudioTracks()[0]);
successCallback(mediaStream);
})
.catch(error => {
this.clearPermissionDialogTimer(startTime, timeForDialogEvent);
if (error.name === 'Error') {
// Safari OverConstrainedError has as name property 'Error' instead of 'OverConstrainedError'
error.name = error.constructor.name;
}
let errorName, errorMessage;
switch (error.name.toLowerCase()) {
case 'notfounderror':
errorName = OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
break;
case 'notallowederror':
errorName = OpenViduErrorName.DEVICE_ACCESS_DENIED;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
break;
case 'overconstrainederror':
if (error.constraint.toLowerCase() === 'deviceid') {
errorName = OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;
errorMessage = "Audio input device with deviceId '" + (<ConstrainDOMStringParameters>(<MediaTrackConstraints>constraints.video).deviceId!!).exact + "' not found";
} else {
errorName = OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR;
errorMessage = "Audio input device doesn't support the value passed for constraint '" + error.constraint + "'";
}
errorCallback(new OpenViduError(errorName, errorMessage));
break;
}
});
} else {
successCallback(mediaStream);
}
};
const getMediaError = error => {
console.error(error);
this.clearPermissionDialogTimer(startTime, timeForDialogEvent);
if (error.name === 'Error') {
// Safari OverConstrainedError has as name property 'Error' instead of 'OverConstrainedError'
error.name = error.constructor.name;
}
let errorName, errorMessage;
switch (error.name.toLowerCase()) {
case 'notfounderror':
navigator.mediaDevices.getUserMedia({
audio: false,
video: constraints.video
})
.then(mediaStream => {
mediaStream.getVideoTracks().forEach((track) => {
track.stop();
});
errorName = OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
}).catch(e => {
errorName = OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
});
break;
case 'notallowederror':
errorName = this.stream.isSendScreen() ? OpenViduErrorName.SCREEN_CAPTURE_DENIED : OpenViduErrorName.DEVICE_ACCESS_DENIED;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
break;
case 'overconstrainederror':
navigator.mediaDevices.getUserMedia({
audio: false,
video: constraints.video
})
.then(mediaStream => {
mediaStream.getVideoTracks().forEach((track) => {
track.stop();
});
if (error.constraint.toLowerCase() === 'deviceid') {
errorName = OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;
errorMessage = "Audio input device with deviceId '" + (<ConstrainDOMStringParameters>(<MediaTrackConstraints>constraints.audio).deviceId!!).exact + "' not found";
} else {
errorName = OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR;
errorMessage = "Audio input device doesn't support the value passed for constraint '" + error.constraint + "'";
}
errorCallback(new OpenViduError(errorName, errorMessage));
}).catch(e => {
if (error.constraint.toLowerCase() === 'deviceid') {
errorName = OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND;
errorMessage = "Video input device with deviceId '" + (<ConstrainDOMStringParameters>(<MediaTrackConstraints>constraints.video).deviceId!!).exact + "' not found";
} else {
errorName = OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR;
errorMessage = "Video input device doesn't support the value passed for constraint '" + error.constraint + "'";
}
errorCallback(new OpenViduError(errorName, errorMessage));
});
break;
case 'aborterror':
case 'notreadableerror':
errorName = OpenViduErrorName.DEVICE_ALREADY_IN_USE;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
break;
default:
errorName = OpenViduErrorName.GENERIC_ERROR;
errorMessage = error.toString();
errorCallback(new OpenViduError(errorName, errorMessage));
break;
}
}
// Check if new constraints need to be generated. No constraints needed if
// - video track is given and no audio
// - audio track is given and no video
// - both video and audio tracks are given
if ((typeof MediaStreamTrack !== 'undefined' && this.properties.videoSource instanceof MediaStreamTrack && !this.properties.audioSource)
|| (typeof MediaStreamTrack !== 'undefined' && this.properties.audioSource instanceof MediaStreamTrack && !this.properties.videoSource)
|| (typeof MediaStreamTrack !== 'undefined' && this.properties.videoSource instanceof MediaStreamTrack && this.properties.audioSource instanceof MediaStreamTrack)) {
const mediaStream = new MediaStream();
if (typeof MediaStreamTrack !== 'undefined' && this.properties.videoSource instanceof MediaStreamTrack) {
mediaStream.addTrack((<MediaStreamTrack>this.properties.videoSource));
}
if (typeof MediaStreamTrack !== 'undefined' && this.properties.audioSource instanceof MediaStreamTrack) {
mediaStream.addTrack((<MediaStreamTrack>this.properties.audioSource));
}
// MediaStreamTracks are handled within callback - just call callback with new MediaStream() and let it handle the sources
successCallback(mediaStream);
// Return as we do not need to process further
return;
}
this.openvidu.generateMediaConstraints(this.properties)
.then(myConstraints => {
constraints = myConstraints;
const outboundStreamOptions = {
mediaConstraints: constraints,
publisherProperties: this.properties
};
this.stream.setOutboundStreamOptions(outboundStreamOptions);
if (this.stream.isSendVideo() || this.stream.isSendAudio()) {
const definedAudioConstraint = ((constraints.audio === undefined) ? true : constraints.audio);
constraintsAux.audio = this.stream.isSendScreen() ? false : definedAudioConstraint;
constraintsAux.video = constraints.video;
startTime = Date.now();
this.setPermissionDialogTimer(timeForDialogEvent);
if (this.stream.isSendScreen() && navigator.mediaDevices['getDisplayMedia'] && platform.name !== 'Electron') {
navigator.mediaDevices['getDisplayMedia']({ video: true })
.then(mediaStream => {
getMediaSuccess(mediaStream, definedAudioConstraint);
})
.catch(error => {
getMediaError(error);
});
} else {
navigator.mediaDevices.getUserMedia(constraintsAux)
.then(mediaStream => {
getMediaSuccess(mediaStream, definedAudioConstraint);
})
.catch(error => {
getMediaError(error);
});
}
} else {
reject(new OpenViduError(OpenViduErrorName.NO_INPUT_SOURCE_SET,
"Properties 'audioSource' and 'videoSource' cannot be set to false or null at the same time when calling 'OpenVidu.initPublisher'"));
}
})
.catch((error: OpenViduError) => {
errorCallback(error);
});
});
}
/**
* @hidden
*/
reestablishStreamPlayingEvent() {
if (this.ee.getListeners('streamPlaying').length > 0) {
this.addPlayEventToFirstVideo();
}
}
/* Private methods */
private setPermissionDialogTimer(waitTime: number): void {
this.permissionDialogTimeout = setTimeout(() => {
this.emitEvent('accessDialogOpened', []);
}, waitTime);
}
private clearPermissionDialogTimer(startTime: number, waitTime: number): void {
clearTimeout(this.permissionDialogTimeout);
if ((Date.now() - startTime) > waitTime) {
// Permission dialog was shown and now is closed
this.emitEvent('accessDialogClosed', []);
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,478 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Stream } from './Stream';
import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher';
import { StreamManagerVideo } from '../OpenViduInternal/Interfaces/Public/StreamManagerVideo';
import { Event } from '../OpenViduInternal/Events/Event';
import { StreamManagerEvent } from '../OpenViduInternal/Events/StreamManagerEvent';
import { VideoElementEvent } from '../OpenViduInternal/Events/VideoElementEvent';
import { VideoInsertMode } from '../OpenViduInternal/Enums/VideoInsertMode';
import EventEmitter = require('wolfy87-eventemitter');
import platform = require('platform');
/**
* Interface in charge of displaying the media streams in the HTML DOM. This wraps any [[Publisher]] and [[Subscriber]] object.
* You can insert as many video players fo the same Stream as you want by calling [[StreamManager.addVideoElement]] or
* [[StreamManager.createVideoElement]].
*
* The use of StreamManager wrapper is particularly useful when you don't need to differentiate between Publisher or Subscriber streams or just
* want to directly manage your own video elements (even more than one video element per Stream). This scenario is pretty common in
* declarative, MVC frontend frameworks such as Angular, React or Vue.js
*/
export class StreamManager implements EventDispatcher {
/**
* The Stream represented in the DOM by the Publisher/Subscriber
*/
stream: Stream;
/**
* All the videos displaying the Stream of this Publisher/Subscriber
*/
videos: StreamManagerVideo[] = [];
/**
* Whether the Stream represented in the DOM is local or remote
* - `false` for [[Publisher]]
* - `true` for [[Subscriber]]
*/
remote: boolean;
/**
* The DOM HTMLElement assigned as target element when creating the video for the Publisher/Subscriber. This property is only defined if:
* - [[Publisher]] has been initialized by calling method [[OpenVidu.initPublisher]] with a valid `targetElement` parameter
* - [[Subscriber]] has been initialized by calling method [[Session.subscribe]] with a valid `targetElement` parameter
*/
targetElement: HTMLElement;
/**
* `id` attribute of the DOM video element displaying the Publisher/Subscriber's stream. This property is only defined if:
* - [[Publisher]] has been initialized by calling method [[OpenVidu.initPublisher]] with a valid `targetElement` parameter
* - [[Subscriber]] has been initialized by calling method [[Session.subscribe]] with a valid `targetElement` parameter
*/
id: string;
/**
* @hidden
*/
firstVideoElement: StreamManagerVideo;
/**
* @hidden
*/
lazyLaunchVideoElementCreatedEvent = false;
/**
* @hidden
*/
element: HTMLElement;
/**
* @hidden
*/
ee = new EventEmitter();
/**
* @hidden
*/
protected canPlayListener: EventListener;
/**
* @hidden
*/
constructor(stream: Stream, targetElement?: HTMLElement | string) {
this.stream = stream;
this.stream.streamManager = this;
this.remote = !this.stream.isLocal();
if (!!targetElement) {
let targEl;
if (typeof targetElement === 'string') {
targEl = document.getElementById(targetElement);
} else if (targetElement instanceof HTMLElement) {
targEl = targetElement;
}
if (!!targEl) {
this.firstVideoElement = {
targetElement: targEl,
video: document.createElement('video'),
id: '',
canplayListenerAdded: false
};
if (platform.name === 'Safari') {
this.firstVideoElement.video.setAttribute('playsinline', 'true');
}
this.targetElement = targEl;
this.element = targEl;
}
}
this.canPlayListener = () => {
if (this.stream.isLocal()) {
if (!this.stream.displayMyRemote()) {
console.info("Your local 'Stream' with id [" + this.stream.streamId + '] video is now playing');
this.ee.emitEvent('videoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'videoPlaying')]);
} else {
console.info("Your own remote 'Stream' with id [" + this.stream.streamId + '] video is now playing');
this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'remoteVideoPlaying')]);
}
} else {
console.info("Remote 'Stream' with id [" + this.stream.streamId + '] video is now playing');
this.ee.emitEvent('videoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'videoPlaying')]);
}
this.ee.emitEvent('streamPlaying', [new StreamManagerEvent(this, 'streamPlaying', undefined)]);
};
}
/**
* See [[EventDispatcher.on]]
*/
on(type: string, handler: (event: Event) => void): EventDispatcher {
this.ee.on(type, event => {
if (event) {
console.info("Event '" + type + "' triggered by '" + (this.remote ? 'Subscriber' : 'Publisher') + "'", event);
} else {
console.info("Event '" + type + "' triggered by '" + (this.remote ? 'Subscriber' : 'Publisher') + "'");
}
handler(event);
});
if (type === 'videoElementCreated') {
if (!!this.stream && this.lazyLaunchVideoElementCreatedEvent) {
this.ee.emitEvent('videoElementCreated', [new VideoElementEvent(this.videos[0].video, this, 'videoElementCreated')]);
this.lazyLaunchVideoElementCreatedEvent = false;
}
}
if (type === 'streamPlaying' || type === 'videoPlaying') {
if (this.videos[0] && this.videos[0].video &&
this.videos[0].video.currentTime > 0 &&
this.videos[0].video.paused === false &&
this.videos[0].video.ended === false &&
this.videos[0].video.readyState === 4) {
this.ee.emitEvent('streamPlaying', [new StreamManagerEvent(this, 'streamPlaying', undefined)]);
this.ee.emitEvent('videoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'videoPlaying')]);
}
}
if (type === 'streamAudioVolumeChange' && this.stream.hasAudio) {
this.stream.enableVolumeChangeEvent();
}
return this;
}
/**
* See [[EventDispatcher.once]]
*/
once(type: string, handler: (event: Event) => void): StreamManager {
this.ee.once(type, event => {
if (event) {
console.info("Event '" + type + "' triggered once", event);
} else {
console.info("Event '" + type + "' triggered once");
}
handler(event);
});
if (type === 'videoElementCreated') {
if (!!this.stream && this.lazyLaunchVideoElementCreatedEvent) {
this.ee.emitEvent('videoElementCreated', [new VideoElementEvent(this.videos[0].video, this, 'videoElementCreated')]);
}
}
if (type === 'streamPlaying' || type === 'videoPlaying') {
if (this.videos[0] && this.videos[0].video &&
this.videos[0].video.currentTime > 0 &&
this.videos[0].video.paused === false &&
this.videos[0].video.ended === false &&
this.videos[0].video.readyState === 4) {
this.ee.emitEvent('streamPlaying', [new StreamManagerEvent(this, 'streamPlaying', undefined)]);
this.ee.emitEvent('videoPlaying', [new VideoElementEvent(this.videos[0].video, this, 'videoPlaying')]);
}
}
if (type === 'streamAudioVolumeChange' && this.stream.hasAudio) {
this.stream.enableOnceVolumeChangeEvent();
}
return this;
}
/**
* See [[EventDispatcher.off]]
*/
off(type: string, handler?: (event: Event) => void): StreamManager {
if (!handler) {
this.ee.removeAllListeners(type);
} else {
this.ee.off(type, handler);
}
if (type === 'streamAudioVolumeChange') {
this.stream.disableVolumeChangeEvent();
}
return this;
}
/**
* Makes `video` element parameter display this [[stream]]. This is useful when you are
* [managing the video elements on your own](/docs/how-do-i/manage-videos/#you-take-care-of-the-video-players)
*
* Calling this method with a video already added to other Publisher/Subscriber will cause the video element to be
* disassociated from that previous Publisher/Subscriber and to be associated to this one.
*
* @returns 1 if the video wasn't associated to any other Publisher/Subscriber and has been successfully added to this one.
* 0 if the video was already added to this Publisher/Subscriber. -1 if the video was previously associated to any other
* Publisher/Subscriber and has been successfully disassociated from that one and properly added to this one.
*/
addVideoElement(video: HTMLVideoElement): number {
this.initializeVideoProperties(video);
if (this.stream.isLocal() && this.stream.displayMyRemote()) {
if (video.srcObject !== this.stream.getMediaStream()) {
video.srcObject = this.stream.getMediaStream();
}
}
// If the video element is already part of this StreamManager do nothing
for (const v of this.videos) {
if (v.video === video) {
return 0;
}
}
let returnNumber = 1;
for (const streamManager of this.stream.session.streamManagers) {
if (streamManager.disassociateVideo(video)) {
returnNumber = -1;
break;
}
}
this.stream.session.streamManagers.forEach(streamManager => {
streamManager.disassociateVideo(video);
});
this.pushNewStreamManagerVideo({
video,
id: video.id,
canplayListenerAdded: false
});
console.info('New video element associated to ', this);
return returnNumber;
}
/**
* Creates a new video element displaying this [[stream]]. This allows you to have multiple video elements displaying the same media stream.
*
* #### Events dispatched
*
* The Publisher/Subscriber object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM. See [[VideoElementEvent]]
*
* @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher/Subscriber will be inserted
* @param insertMode How the video element will be inserted accordingly to `targetElemet`
*
* @returns The created HTMLVideoElement
*/
createVideoElement(targetElement?: string | HTMLElement, insertMode?: VideoInsertMode): HTMLVideoElement {
let targEl;
if (typeof targetElement === 'string') {
targEl = document.getElementById(targetElement);
if (!targEl) {
throw new Error("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement);
}
} else if (targetElement instanceof HTMLElement) {
targEl = targetElement;
} else {
throw new Error("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement);
}
const video = document.createElement('video');
this.initializeVideoProperties(video);
let insMode = !!insertMode ? insertMode : VideoInsertMode.APPEND;
switch (insMode) {
case VideoInsertMode.AFTER:
targEl.parentNode!!.insertBefore(video, targEl.nextSibling);
break;
case VideoInsertMode.APPEND:
targEl.appendChild(video);
break;
case VideoInsertMode.BEFORE:
targEl.parentNode!!.insertBefore(video, targEl);
break;
case VideoInsertMode.PREPEND:
targEl.insertBefore(video, targEl.childNodes[0]);
break;
case VideoInsertMode.REPLACE:
targEl.parentNode!!.replaceChild(video, targEl);
break;
default:
insMode = VideoInsertMode.APPEND;
targEl.appendChild(video);
break;
}
const v: StreamManagerVideo = {
targetElement: targEl,
video,
insertMode: insMode,
id: video.id,
canplayListenerAdded: false
};
this.pushNewStreamManagerVideo(v);
this.ee.emitEvent('videoElementCreated', [new VideoElementEvent(v.video, this, 'videoElementCreated')]);
this.lazyLaunchVideoElementCreatedEvent = !!this.firstVideoElement;
return video;
}
/**
* @hidden
*/
initializeVideoProperties(video: HTMLVideoElement): void {
if (!(this.stream.isLocal() && this.stream.displayMyRemote())) {
// Avoid setting the MediaStream into the srcObject if remote subscription before publishing
if (video.srcObject !== this.stream.getMediaStream()) {
// If srcObject already set don't do it again
video.srcObject = this.stream.getMediaStream();
}
}
video.autoplay = true;
video.controls = false;
if (platform.name === 'Safari') {
video.setAttribute('playsinline', 'true');
}
if (!video.id) {
video.id = (this.remote ? 'remote-' : 'local-') + 'video-' + this.stream.streamId;
// DEPRECATED property: assign once the property id if the user provided a valid targetElement
if (!this.id && !!this.targetElement) {
this.id = video.id;
}
}
if (!this.remote && !this.stream.displayMyRemote()) {
video.muted = true;
if (video.style.transform === 'rotateY(180deg)' && !this.stream.outboundStreamOpts.publisherProperties.mirror) {
// If the video was already rotated and now is set to not mirror
this.removeMirrorVideo(video);
} else if (this.stream.outboundStreamOpts.publisherProperties.mirror && !this.stream.isSendScreen()) {
this.mirrorVideo(video);
}
}
}
/**
* @hidden
*/
removeAllVideos(): void {
for (let i = this.stream.session.streamManagers.length - 1; i >= 0; --i) {
if (this.stream.session.streamManagers[i] === this) {
this.stream.session.streamManagers.splice(i, 1);
}
}
this.videos.forEach(streamManagerVideo => {
// Remove oncanplay event listener (only OpenVidu browser listener, not the user ones)
streamManagerVideo.video.removeEventListener('canplay', this.canPlayListener);
streamManagerVideo.canplayListenerAdded = false;
if (!!streamManagerVideo.targetElement) {
// Only remove from DOM videos created by OpenVidu Browser (those generated by passing a valid targetElement in OpenVidu.initPublisher
// and Session.subscribe or those created by StreamManager.createVideoElement). All this videos triggered a videoElementCreated event
streamManagerVideo.video.parentNode!.removeChild(streamManagerVideo.video);
this.ee.emitEvent('videoElementDestroyed', [new VideoElementEvent(streamManagerVideo.video, this, 'videoElementDestroyed')]);
}
// Remove srcObject from the video
streamManagerVideo.video.srcObject = null;
// Remove from collection of videos every video managed by OpenVidu Browser
this.videos.filter(v => !v.targetElement);
});
}
/**
* @hidden
*/
disassociateVideo(video: HTMLVideoElement): boolean {
let disassociated = false;
for (let i = 0; i < this.videos.length; i++) {
if (this.videos[i].video === video) {
this.videos[i].video.removeEventListener('canplay', this.canPlayListener);
this.videos.splice(i, 1);
disassociated = true;
console.info('Video element disassociated from ', this);
break;
}
}
return disassociated;
}
/**
* @hidden
*/
addPlayEventToFirstVideo() {
if ((!!this.videos[0]) && (!!this.videos[0].video) && (!this.videos[0].canplayListenerAdded)) {
this.videos[0].video.addEventListener('canplay', this.canPlayListener);
this.videos[0].canplayListenerAdded = true;
}
}
/**
* @hidden
*/
updateMediaStream(mediaStream: MediaStream) {
this.videos.forEach(streamManagerVideo => {
streamManagerVideo.video.srcObject = mediaStream;
if (platform['isIonicIos']) {
// iOS Ionic. LIMITATION: must reinsert the video in the DOM for
// the media stream to be updated
const vParent = streamManagerVideo.video.parentElement;
const newVideo = streamManagerVideo.video;
vParent!!.replaceChild(newVideo, streamManagerVideo.video);
streamManagerVideo.video = newVideo;
}
});
}
/**
* @hidden
*/
emitEvent(type: string, eventArray: any[]): void {
this.ee.emitEvent(type, eventArray);
}
private pushNewStreamManagerVideo(streamManagerVideo: StreamManagerVideo) {
this.videos.push(streamManagerVideo);
this.addPlayEventToFirstVideo();
if (this.stream.session.streamManagers.indexOf(this) === -1) {
this.stream.session.streamManagers.push(this);
}
}
private mirrorVideo(video): void {
if (!platform['isIonicIos']) {
video.style.transform = 'rotateY(180deg)';
video.style.webkitTransform = 'rotateY(180deg)';
}
}
private removeMirrorVideo(video): void {
video.style.transform = 'unset';
video.style.webkitTransform = 'unset';
}
}

View File

@ -1,67 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Stream } from './Stream';
import { StreamManager } from './StreamManager';
import { SubscriberProperties } from '../OpenViduInternal/Interfaces/Public/SubscriberProperties';
/**
* Packs remote media streams. Participants automatically receive them when others publish their streams. Initialized with [[Session.subscribe]] method
*/
export class Subscriber extends StreamManager {
/**
* @hidden
*/
properties: SubscriberProperties;
/**
* @hidden
*/
constructor(stream: Stream, targEl: string | HTMLElement, properties: SubscriberProperties) {
super(stream, targEl);
this.element = this.targetElement;
this.stream = stream;
this.properties = properties;
}
/**
* Subscribe or unsubscribe from the audio stream (if available). Calling this method twice in a row passing same value will have no effect
* @param value `true` to subscribe to the audio stream, `false` to unsubscribe from it
*/
subscribeToAudio(value: boolean): Subscriber {
this.stream.getMediaStream().getAudioTracks().forEach((track) => {
track.enabled = value;
});
console.info("'Subscriber' has " + (value ? 'subscribed to' : 'unsubscribed from') + ' its audio stream');
return this;
}
/**
* Subscribe or unsubscribe from the video stream (if available). Calling this method twice in a row passing same value will have no effect
* @param value `true` to subscribe to the video stream, `false` to unsubscribe from it
*/
subscribeToVideo(value: boolean): Subscriber {
this.stream.getMediaStream().getVideoTracks().forEach((track) => {
track.enabled = value;
});
console.info("'Subscriber' has " + (value ? 'subscribed to' : 'unsubscribed from') + ' its video stream');
return this;
}
}

View File

@ -1,35 +0,0 @@
{
//"allowUnusedLabels": true,
"allowUnreachableCode": false,
"buildOnSave": false,
"compileOnSave": true,
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"emitBOM": false,
"forceConsistentCasingInFileNames": true,
"lib": [
"dom",
"es2015.promise",
"es5",
"scripthost"
],
"module": "commonjs",
"noFallthroughCasesInSwitch": true,
//"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
//"noUnusedLocals": true,
//"noUnusedParameters": true,
"outDir": "../../lib",
"preserveConstEnums": true,
"removeComments": true,
"skipDefaultLibCheck": true,
"skipLibCheck": true,
"sourceMap": true,
"strictNullChecks": true,
"suppressExcessPropertyErrors": true,
"suppressImplicitAnyIndexErrors": true,
"target": "es5"
}
}

View File

@ -1,23 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
export enum LocalRecorderState {
READY = 'READY',
RECORDING = 'RECORDING',
PAUSED = 'PAUSED',
FINISHED = 'FINISHED'
}

View File

@ -1,124 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* Defines property [[OpenViduError.name]]
*/
export enum OpenViduErrorName {
/**
* Browser is not supported by OpenVidu.
* Returned upon unsuccessful [[Session.connect]]
*/
BROWSER_NOT_SUPPORTED = 'BROWSER_NOT_SUPPORTED',
/**
* The user hasn't granted permissions to the required input device when the browser asked for them.
* Returned upon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]]
*/
DEVICE_ACCESS_DENIED = 'DEVICE_ACCESS_DENIED',
/**
* The required input device is probably being used by other process when the browser asked for it.
* Accuracy of this property is only granted for Chrome and Firefox clients.
* Returned upon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]]
*/
DEVICE_ALREADY_IN_USE = "DEVICE_ALREADY_IN_USE",
/**
* The user hasn't granted permissions to capture some desktop screen when the browser asked for them.
* Returned upon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]]
*/
SCREEN_CAPTURE_DENIED = 'SCREEN_CAPTURE_DENIED',
/**
* Browser does not support screen sharing.
* Returned upon unsuccessful [[OpenVidu.initPublisher]]
*/
SCREEN_SHARING_NOT_SUPPORTED = 'SCREEN_SHARING_NOT_SUPPORTED',
/**
* Only for Chrome, there's no screen sharing extension installed
* Returned upon unsuccessful [[OpenVidu.initPublisher]]
*/
SCREEN_EXTENSION_NOT_INSTALLED = 'SCREEN_EXTENSION_NOT_INSTALLED',
/**
* Only for Chrome, the screen sharing extension is installed but is disabled
* Returned upon unsuccessful [[OpenVidu.initPublisher]]
*/
SCREEN_EXTENSION_DISABLED = 'SCREEN_EXTENSION_DISABLED',
/**
* No video input device found with the provided deviceId (property [[PublisherProperties.videoSource]])
* Returned upon unsuccessful [[OpenVidu.initPublisher]]
*/
INPUT_VIDEO_DEVICE_NOT_FOUND = 'INPUT_VIDEO_DEVICE_NOT_FOUND',
/**
* No audio input device found with the provided deviceId (property [[PublisherProperties.audioSource]])
* Returned upon unsuccessful [[OpenVidu.initPublisher]]
*/
INPUT_AUDIO_DEVICE_NOT_FOUND = 'INPUT_AUDIO_DEVICE_NOT_FOUND',
/**
* Method [[OpenVidu.initPublisher]] has been called with properties `videoSource` and `audioSource` of
* [[PublisherProperties]] parameter both set to *false* or *null*
*/
NO_INPUT_SOURCE_SET = 'NO_INPUT_SOURCE_SET',
/**
* Some media property of [[PublisherProperties]] such as `frameRate` or `resolution` is not supported
* by the input devices (whenever it is possible they are automatically adjusted to the most similar value).
* Returned upon unsuccessful [[OpenVidu.initPublisher]]
*/
PUBLISHER_PROPERTIES_ERROR = 'PUBLISHER_PROPERTIES_ERROR',
/**
* The client tried to call a method without the required permissions. This can occur for methods [[Session.publish]],
* [[Session.forceUnpublish]], [[Session.forceDisconnect]], [[Stream.applyFilter]], [[Stream.removeFilter]]
*/
OPENVIDU_PERMISSION_DENIED = 'OPENVIDU_PERMISSION_DENIED',
/**
* _Not in use yet_
*/
OPENVIDU_NOT_CONNECTED = 'OPENVIDU_NOT_CONNECTED',
/**
* _Not in use yet_
*/
GENERIC_ERROR = 'GENERIC_ERROR'
}
/**
* Simple object to identify runtime errors on the client side
*/
export class OpenViduError {
name: OpenViduErrorName;
message: string;
/**
* @hidden
*/
constructor(name: OpenViduErrorName, message: string) {
this.name = name;
this.message = message;
}
}

View File

@ -1,44 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* How the video will be inserted in the DOM for Publishers and Subscribers. See [[PublisherProperties.insertMode]] and [[SubscriberProperties.insertMode]]
*/
export enum VideoInsertMode {
/**
* Video inserted after the target element (as next sibling)
*/
AFTER = 'AFTER',
/**
* Video inserted as last child of the target element
*/
APPEND = 'APPEND',
/**
* Video inserted before the target element (as previous sibling)
*/
BEFORE = 'BEFORE',
/**
* Video inserted as first child of the target element
*/
PREPEND = 'PREPEND',
/**
* Video replaces target element
*/
REPLACE = 'REPLACE'
}

View File

@ -1,62 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Connection } from '../../OpenVidu/Connection';
import { Session } from '../../OpenVidu/Session';
/**
* Defines the following events:
* - `connectionCreated`: dispatched by [[Session]]
* - `connectionDestroyed`: dispatched by [[Session]]
*/
export class ConnectionEvent extends Event {
/**
* Connection object that was created or destroyed
*/
connection: Connection;
/**
* For `connectionDestroyed` event:
* - "disconnect": the remote user has called `Session.disconnect()`
* - "forceDisconnectByUser": the remote user has been evicted from the Session by other user calling `Session.forceDisconnect()`
* - "forceDisconnectByServer": the remote user has been evicted from the Session by the application
* - "sessionClosedByServer": the Session has been closed by the application
* - "networkDisconnect": the remote user network connection has dropped
*
* For `connectionCreated` event an empty string
*/
reason: string;
/**
* @hidden
*/
constructor(cancelable: boolean, target: Session, type: string, connection: Connection, reason: string) {
super(cancelable, target, type);
this.connection = connection;
this.reason = reason;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,86 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Filter } from '../../OpenVidu/Filter';
import { StreamManager } from '../../OpenVidu/StreamManager';
import { Session } from '../../OpenVidu/Session';
import { Stream } from '../../OpenVidu/Stream';
export abstract class Event {
/**
* Whether the event has a default behavior that may be prevented by calling [[Event.preventDefault]]
*/
cancelable: boolean;
/**
* The object that dispatched the event
*/
target: Session | StreamManager | Filter;
/**
* The type of event. This is the same string you pass as first parameter when calling method `on()` of any object implementing [[EventDispatcher]] interface
*/
type: string;
/**
* @hidden
*/
hasBeenPrevented = false;
/**
* @hidden
*/
constructor(cancelable: boolean, target: Session | StreamManager | Filter, type: string) {
this.cancelable = cancelable;
this.target = target;
this.type = type;
}
/**
* Whether the default beahivour of the event has been prevented or not. Call [[Event.preventDefault]] to prevent it
*/
isDefaultPrevented(): boolean {
return this.hasBeenPrevented;
}
/**
* Prevents the default behavior of the event. The following events have a default behavior:
*
* - `sessionDisconnected`: dispatched by [[Session]] object, automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks)
* and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or
* by calling [[Subscriber.createVideoElement]]). For every video removed, each Subscriber object will also dispatch a `videoElementDestroyed` event.
*
* - `streamDestroyed`:
* - If dispatched by a [[Publisher]] (*you* have unpublished): automatically stops all media tracks and deletes any HTML video element associated to it (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement`
* in method [[OpenVidu.initPublisher]] or by calling [[Publisher.createVideoElement]]). For every video removed, the Publisher object will also dispatch a `videoElementDestroyed` event.
* - If dispatched by [[Session]] (*other user* has unpublished): automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks)
* and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or
* by calling [[Subscriber.createVideoElement]]). For every video removed, the Subscriber object will also dispatch a `videoElementDestroyed` event.
*/
preventDefault() {
// tslint:disable-next-line:no-empty
this.callDefaultBehavior = () => { };
this.hasBeenPrevented = true;
}
/**
* @hidden
*/
abstract callDefaultBehavior();
}

View File

@ -1,47 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Stream } from '../../OpenVidu/Stream';
import { Filter } from '../../OpenVidu/Filter';
/**
* Defines every event dispatched by audio/video stream filters. You can subscribe to filter events by calling [[Filter.addEventListener]]
*/
export class FilterEvent extends Event {
/**
* Data of the event
*/
data: Object;
/**
* @hidden
*/
constructor(target: Filter, eventType: string, data: Object) {
super(false, target, eventType);
this.data = data;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,62 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Connection } from '../../OpenVidu/Connection';
import { Session } from '../..';
/**
* Defines the following events:
* - `publisherStartSpeaking`: dispatched by [[Session]]
* - `publisherStopSpeaking`: dispatched by [[Session]]
*
* More information:
* - This events will only be triggered for **remote streams that have audio tracks** ([[Stream.hasAudio]] must be true)
* - Both events share the same lifecycle. That means that you can subscribe to only one of them if you want, but if you call `Session.off('publisherStopSpeaking')`,
* keep in mind that this will also internally remove any 'publisherStartSpeaking' event
* - You can further configure how the events are dispatched by setting property `publisherSpeakingEventsOptions` in the call of [[OpenVidu.setAdvancedConfiguration]]
*/
export class PublisherSpeakingEvent extends Event {
/**
* The client that started or stopped speaking
*/
connection: Connection;
/**
* The streamId of the Stream affected by the speaking event
*/
streamId: string;
/**
* @hidden
*/
constructor(target: Session, type: string, connection: Connection, streamId: string) {
super(false, target, type);
this.type = type;
this.connection = connection;
this.streamId = streamId;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,73 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Session } from '../../OpenVidu/Session';
/**
* Defines the following events:
* - `recordingStarted`: dispatched by [[Session]]
* - `recordingStopped`: dispatched by [[Session]]
*/
export class RecordingEvent extends Event {
/**
* The recording ID generated in openvidu-server
*/
id: string;
/**
* The recording name you supplied to openvidu-server. For example, to name your recording file MY_RECORDING:
* - With **API REST**: POST to `/api/recordings/start` passing JSON body `{"session":"sessionId","name":"MY_RECORDING"}`
* - With **openvidu-java-client**: `OpenVidu.startRecording(sessionId, "MY_RECORDING")` or `OpenVidu.startRecording(sessionId, new RecordingProperties.Builder().name("MY_RECORDING").build())`
* - With **openvidu-node-client**: `OpenVidu.startRecording(sessionId, "MY_RECORDING")` or `OpenVidu.startRecording(sessionId, {name: "MY_RECORDING"})`
*
* If no name is supplied, this property will be undefined and the recorded file will be named after property [[id]]
*/
name?: string;
/**
* For 'recordingStopped' event:
* - "recordingStoppedByServer": the recording has been gracefully stopped by the application
* - "sessionClosedByServer": the Session has been closed by the application
* - "automaticStop": see [Automatic stop of recordings](https://openvidu.io/docs/advanced-features/recording/#automatic-stop-of-recordings)
* - "mediaServerDisconnect": OpenVidu Media Server has crashed or lost its connection. A new media server instance is active and the recording has been stopped (no media streams are available in the new media server)
*
* For 'recordingStarted' empty string
*/
reason?: string;
/**
* @hidden
*/
constructor(target: Session, type: string, id: string, name: string, reason?: string) {
super(false, target, type);
this.id = id;
if (name !== id) {
this.name = name;
}
this.reason = reason;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,68 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Session } from '../../OpenVidu/Session';
/**
* Defines event `sessionDisconnected` dispatched by [[Session]]
*/
export class SessionDisconnectedEvent extends Event {
/**
* - "disconnect": you have called `Session.disconnect()`
* - "forceDisconnectByUser": you have been evicted from the Session by other user calling `Session.forceDisconnect()`
* - "forceDisconnectByServer": you have been evicted from the Session by the application
* - "sessionClosedByServer": the Session has been closed by the application
* - "networkDisconnect": your network connection has dropped
*/
reason: string;
/**
* @hidden
*/
constructor(target: Session, reason: string) {
super(true, target, 'sessionDisconnected');
this.reason = reason;
}
/**
* @hidden
*/
callDefaultBehavior() {
console.info("Calling default behavior upon '" + this.type + "' event dispatched by 'Session'");
const session = <Session>this.target;
// Dispose and delete all remote Connections
for (const connectionId in session.remoteConnections) {
if (!!session.remoteConnections[connectionId].stream) {
session.remoteConnections[connectionId].stream.disposeWebRtcPeer();
session.remoteConnections[connectionId].stream.disposeMediaStream();
if (session.remoteConnections[connectionId].stream.streamManager) {
session.remoteConnections[connectionId].stream.streamManager.removeAllVideos();
}
delete session.remoteStreamsCreated[session.remoteConnections[connectionId].stream.streamId];
session.remoteConnections[connectionId].dispose();
}
delete session.remoteConnections[connectionId];
}
}
}

View File

@ -1,65 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Connection } from '../../OpenVidu/Connection';
import { Session } from '../../OpenVidu/Session';
/**
* Defines the following events:
* - `signal`: dispatched by [[Session]]
* - `signal:TYPE`: dispatched by [[Session]]
*/
export class SignalEvent extends Event {
/**
* The type of signal (can be empty).
*
* The client must be subscribed to `Session.on('signal:type', function(signalEvent) {...})` to receive this object in the callback.
*
* Subscribing to `Session.on('signal', function(signalEvent) {...})` will trigger all types of signals.
*/
type: string;
/**
* The message of the signal (can be emtpy)
*/
data: string;
/**
* The client that sent the signal
*/
from: Connection;
/**
* @hidden
*/
constructor(target: Session, type: string, data: string, from: Connection) {
super(false, target, type);
this.type = type;
this.data = data;
this.from = from;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,111 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Publisher } from '../../OpenVidu/Publisher';
import { Session } from '../../OpenVidu/Session';
import { Stream } from '../../OpenVidu/Stream';
/**
* Defines the following events:
* - `streamCreated`: dispatched by [[Session]] and [[Publisher]]
* - `streamDestroyed`: dispatched by [[Session]] and [[Publisher]]
*/
export class StreamEvent extends Event {
/**
* Stream object that was created or destroyed
*/
stream: Stream;
/**
* For 'streamDestroyed' event:
* - "unpublish": method `Session.unpublish()` has been called
* - "disconnect": method `Session.disconnect()` has been called
* - "forceUnpublishByUser": some user has called `Session.forceUnpublish()` over the Stream
* - "forceDisconnectByUser": some user has called `Session.forceDisconnect()` over the Stream
* - "forceUnpublishByServer": the user's stream has been unpublished from the Session by the application
* - "forceDisconnectByServer": the user has been evicted from the Session by the application
* - "sessionClosedByServer": the Session has been closed by the application
* - "networkDisconnect": the user's network connection has dropped
* - "mediaServerDisconnect": OpenVidu Media Server has crashed or lost its connection. A new media server instance is active and no media streams are available in the media server
*
* For 'streamCreated' empty string
*/
reason: string;
/**
* @hidden
*/
constructor(cancelable: boolean, target: Session | Publisher, type: string, stream: Stream, reason: string) {
super(cancelable, target, type);
this.stream = stream;
this.reason = reason;
}
/**
* @hidden
*/
callDefaultBehavior() {
if (this.type === 'streamDestroyed') {
if (this.target instanceof Session) {
// Remote Stream
console.info("Calling default behavior upon '" + this.type + "' event dispatched by 'Session'");
this.stream.disposeWebRtcPeer();
} else if (this.target instanceof Publisher) {
// Local Stream
console.info("Calling default behavior upon '" + this.type + "' event dispatched by 'Publisher'");
clearInterval((<Publisher>this.target).screenShareResizeInterval);
this.stream.isLocalStreamReadyToPublish = false;
// Delete Publisher object from OpenVidu publishers array
const openviduPublishers = (<Publisher>this.target).openvidu.publishers;
for (let i = 0; i < openviduPublishers.length; i++) {
if (openviduPublishers[i] === (<Publisher>this.target)) {
openviduPublishers.splice(i, 1);
break;
}
}
}
// Dispose the MediaStream local object
this.stream.disposeMediaStream();
// Remove from DOM all video elements associated to this Stream, if there's a StreamManager defined
// (method Session.subscribe must have been called)
if (this.stream.streamManager) this.stream.streamManager.removeAllVideos();
// Delete stream from Session.remoteStreamsCreated map
delete this.stream.session.remoteStreamsCreated[this.stream.streamId];
// Delete StreamOptionsServer from remote Connection
const remoteConnection = this.stream.session.remoteConnections[this.stream.connection.connectionId];
if (!!remoteConnection && !!remoteConnection.options) {
const streamOptionsServer = remoteConnection.options.streams;
for (let i = streamOptionsServer.length - 1; i >= 0; --i) {
if (streamOptionsServer[i].id === this.stream.streamId) {
streamOptionsServer.splice(i, 1);
}
}
}
}
}
}

View File

@ -1,54 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { StreamManager } from '../../OpenVidu/StreamManager';
/**
* Defines the following events:
* - `streamPlaying`: dispatched by [[StreamManager]] ([[Publisher]] and [[Subscriber]]) whenever its media stream starts playing (one of its videos has media
* and has begun to play). This event will be dispatched when these 3 conditions are met 1) The StreamManager has no video associated in the DOM 2) It is associated to one video 3) That video starts playing
* - `streamAudioVolumeChange`: dispatched by [[StreamManager]] ([[Publisher]] and [[Subscriber]]) when the volume of its Stream's audio track
* changes. Only applies if [[Stream.hasAudio]] is `true`. The frequency this event is fired with is defined by property `interval` of
* [[OpenViduAdvancedConfiguration.publisherSpeakingEventsOptions]] (default 50ms)
*/
export class StreamManagerEvent extends Event {
/**
* For `streamAudioVolumeChange` event:
* - `{newValue: number, oldValue: number}`: new and old audio volume values. These values are between -100 (silence) and 0 (loudest possible volume).
* They are not exact and depend on how the browser is managing the audio track, but -100 and 0 can be taken as limit values.
*
* For `streamPlaying` event undefined
*/
value: Object | undefined;
/**
* @hidden
*/
constructor(target: StreamManager, type: string, value: Object | undefined) {
super(false, target, type);
this.value = value;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,76 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { Session } from '../../OpenVidu/Session';
import { Stream } from '../../OpenVidu/Stream';
import { StreamManager } from '../../OpenVidu/StreamManager';
/**
* Defines event `streamPropertyChanged` dispatched by [[Session]] as well as by [[StreamManager]] ([[Publisher]] and [[Subscriber]]).
* This event is fired when any remote stream (owned by a Subscriber) or local stream (owned by a Publisher) undergoes
* any change in any of its mutable properties (see [[changedProperty]]).
*/
export class StreamPropertyChangedEvent extends Event {
/**
* The Stream whose property has changed. You can always identify the user publishing the changed stream by consulting property [[Stream.connection]]
*/
stream: Stream;
/**
* The property of the stream that changed. This value is either `"videoActive"`, `"audioActive"`, `"videoDimensions"` or `"filter"`
*/
changedProperty: string;
/**
* Cause of the change on the stream's property:
* - For `videoActive`: `"publishVideo"`
* - For `audioActive`: `"publishAudio"`
* - For `videoDimensions`: `"deviceRotated"` or `"screenResized"`
*/
reason: string;
/**
* New value of the property (after change, current value)
*/
newValue: Object;
/**
* Previous value of the property (before change)
*/
oldValue: Object;
/**
* @hidden
*/
constructor(target: Session | StreamManager, stream: Stream, changedProperty: string, newValue: Object, oldValue: Object, reason: string) {
super(false, target, 'streamPropertyChanged');
this.stream = stream;
this.changedProperty = changedProperty;
this.newValue = newValue;
this.oldValue = oldValue;
this.reason = reason;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,49 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event } from './Event';
import { StreamManager } from '../../OpenVidu/StreamManager';
/**
* Defines the following events:
* - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] whenever a new HTML video element has been inserted into DOM by OpenVidu Browser library. See
* [Manage video players](/docs/how-do-i/manage-videos) section.
* - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] whenever an HTML video element has been removed from DOM by OpenVidu Browser library.
*/
export class VideoElementEvent extends Event {
/**
* Video element that was created or destroyed
*/
element: HTMLVideoElement;
/**
* @hidden
*/
constructor(element: HTMLVideoElement, target: StreamManager, type: string) {
super(false, target, type);
this.element = element;
}
/**
* @hidden
*/
// tslint:disable-next-line:no-empty
callDefaultBehavior() { }
}

View File

@ -1,25 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { StreamOptionsServer } from './StreamOptionsServer';
export interface ConnectionOptions {
id: string;
createdAt: number;
metadata: string;
streams: StreamOptionsServer[];
}

View File

@ -1,33 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Connection } from '../../../OpenVidu/Connection';
import { Filter } from '../../../OpenVidu/Filter';
export interface InboundStreamOptions {
id: string;
createdAt: number;
connection: Connection;
hasAudio: boolean;
hasVideo: boolean;
audioActive: boolean;
videoActive: boolean;
typeOfVideo: string;
frameRate: number;
videoDimensions: { width: number, height: number };
filter?: Filter;
}

View File

@ -1,18 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
export interface ObjMap<T> { [s: string]: T; }

View File

@ -1,23 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { PublisherProperties } from '../Public/PublisherProperties';
export interface OutboundStreamOptions {
publisherProperties: PublisherProperties;
mediaConstraints: MediaStreamConstraints;
}

View File

@ -1,22 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
export interface SessionOptions {
sessionId: string;
participantId: string;
metadata: string;
}

View File

@ -1,24 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Connection } from '../../../OpenVidu/Connection';
export interface SignalOptions {
type?: string;
to?: Connection[];
data?: string;
}

View File

@ -1,31 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Filter } from '../../../OpenVidu/Filter';
export interface StreamOptionsServer {
id: string;
createdAt: number;
hasAudio: boolean;
hasVideo: boolean;
audioActive: boolean;
videoActive: boolean;
typeOfVideo: string;
frameRate: number;
videoDimensions: string;
filter: Filter;
}

View File

@ -1,43 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* See [[Session.capabilities]]
*/
export interface Capabilities {
/**
* `true` if the client can call [[Session.forceDisconnect]], `false` if not
*/
forceDisconnect: boolean;
/**
* `true` if the client can call [[Session.forceUnpublish]], `false` if not
*/
forceUnpublish: boolean;
/**
* `true` if the client can call [[Session.publish]], `false` if not
*/
publish: boolean;
/**
* `true` if the client can call [[Session.subscribe]], `false` if not (true for every user for now)
*/
subscribe: boolean;
}

View File

@ -1,37 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* See [[OpenVidu.getDevices]]
*/
export interface Device {
/**
* `"videoinput"`, `"audioinput"`
*/
kind: string;
/**
* Unique ID for the device. Use it on `audioSource` or `videoSource` properties of [[PublisherProperties]]
*/
deviceId: string;
/**
* Description of the device. An empty string if the user hasn't granted permissions to the site to access the device
*/
label: string;
}

View File

@ -1,43 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Event as Event } from '../../Events/Event';
export interface EventDispatcher {
/**
* Adds function `handler` to handle event `type`
*
* @returns The EventDispatcher object
*/
on(type: string, handler: (event: Event) => void): EventDispatcher;
/**
* Adds function `handler` to handle event `type` just once. The handler will be automatically removed after first execution
*
* @returns The object that dispatched the event
*/
once(type: string, handler: (event: Event) => void): Object;
/**
* Removes a `handler` from event `type`. If no handler is provided, all handlers will be removed from the event
*
* @returns The object that dispatched the event
*/
off(type: string, handler?: (event: Event) => void): Object;
}

View File

@ -1,42 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* See [[OpenVidu.setAdvancedConfiguration]]
*/
export interface OpenViduAdvancedConfiguration {
/**
* Array of [RTCIceServer](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer) to be used by OpenVidu Browser. By default OpenVidu will generate the required credentials to use the COTURN server hosted along OpenVidu Server
* You can also set this property to string 'freeice' to force the use of free STUN servers instead (got thanks to [freeice](https://github.com/DamonOehlman/freeice) library).
*/
iceServers?: RTCIceServer[] | string;
/**
* URL to a custom screen share extension for Chrome (always based on ours: [openvidu-screen-sharing-chrome-extension](https://github.com/OpenVidu/openvidu-screen-sharing-chrome-extension)) to be used instead of the default one.
* Must be something like this: `https://chrome.google.com/webstore/detail/YOUR_WEBSTORE_EXTENSION_NAME/YOUR_EXTENSION_ID`
*/
screenShareChromeExtension?: string;
/**
* Custom configuration for the [[PublisherSpeakingEvent]] feature. It is an object which includes the following optional properties:
* - `interval`: (number) how frequently the analyser polls the audio stream to check if speaking has started or stopped. Default **50** (ms)
* - `threshold`: (number) the volume at which _publisherStartSpeaking_ and _publisherStopSpeaking_ events will be fired. Default **-50** (dB)
*/
publisherSpeakingEventsOptions?: any;
}

View File

@ -1,92 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Filter } from '../../../OpenVidu/Filter';
import { VideoInsertMode } from '../../Enums/VideoInsertMode';
/**
* See [[OpenVidu.initPublisher]]
*/
export interface PublisherProperties {
/**
* Which device should provide the audio source. Can be:
* - Property `deviceId` of a [[Device]]
* - A MediaStreamTrack obtained from a MediaStream object with [[OpenVidu.getUserMedia]]
* - `false` or null to have a video-only publisher
* @default _Default microphone_
*/
audioSource?: string | MediaStreamTrack | boolean;
/**
* Desired framerate of the video in frames per second.
* Limiting the framerate has always effect on browsers Chrome and Opera. Firefox requires that the input device explicitly supports the desired framerate.
* @default undefined
*/
frameRate?: number;
/**
* How the video element of the publisher should be inserted in the DOM
* @default VideoInsertMode.APPEND
*/
insertMode?: VideoInsertMode | string;
/**
* Whether the publisher's video will be mirrored in the page or not. Only affects the local view of the publisher in the browser (remote streams will not be mirrored). If `videoSource` is set to "screen" this property is fixed to `false`
* @default true
*/
mirror?: boolean;
/**
* Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property `audioSource` is NOT set to *false* or *null*. You can change the audio state later during the session with [[Publisher.publishAudio]]
* @default true
*/
publishAudio?: boolean;
/**
* Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property `videoSource` is NOT set to *false* or *null*. You can change the video state later during the session with [[Publisher.publishVideo]]
* @default true
*/
publishVideo?: boolean;
/**
* Resolution of the video: `"320x240"`, `"640x480"`, `"1280x720"` (low, medium and high quality respectively)
* @default "640x480"
*/
resolution?: string;
/**
* Which device should provide the video source. Can be:
* - Property `deviceId` of a [[Device]]
* - `"screen"` to screen-share. We provide a default screen-shraring extension for Chrome that can run in any domain, but you can customize it so it has your own icon, your own name, etc. Visit this
* [GitHub repository](https://github.com/OpenVidu/openvidu-screen-sharing-chrome-extension/) to learn how. Once you have uploaded your own extension to Chrome Web Store,
* simply call `OpenVidu.setAdvancedConfiguration({screenShareChromeExtension : "https://chrome.google.com/webstore/detail/YOUR_EXTENSION_NAME/YOUR_EXTENSION_ID"})` before calling `OpenVidu.initPublisher(targetElement, {videoSource: "screen"})`.
* For Firefox `"screen"` string will ask for permissions to share the entire screen. To ask for a specific window or application, use `"window"` string instead (this only applies to Firefox).
* - A MediaStreamTrack obtained from a MediaStream object with [[OpenVidu.getUserMedia]]
* - `false` or null to have an audio-only publisher
* @default _Default camera_
*/
videoSource?: string | MediaStreamTrack | boolean;
/**
* **WARNING**: experimental option. This property may change in the near future
*
* Define a filter to apply in the Publisher's stream
*/
filter?: Filter;
}

View File

@ -1,41 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Connection } from '../../../OpenVidu/Connection';
/**
* See [[Session.signal]]
*/
export interface SignalOptions {
/**
* The actual message of the signal.
*/
data?: string;
/**
* The participants to whom to send the signal. They will only receive it if they are subscribed to
* event `Session.on('signal')`. If empty or undefined, the signal will be send to all participants.
*/
to?: Connection[];
/**
* The type of the signal. Participants subscribed to event `Session.on('signal:type')` will
* receive it. Participants subscribed to `Session.on('signal')` will receive all signals.
*/
type?: string;
}

View File

@ -1,61 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { VideoInsertMode } from '../../Enums/VideoInsertMode';
export interface StreamManagerVideo {
/**
* DOM video element displaying the StreamManager's stream
*/
video: HTMLVideoElement;
/**
* `id` attribute of the DOM video element displaying the StreamManager's stream
*/
id: string;
/**
* The DOM HTMLElement assigned as target element when creating a video for the StreamManager. This property is defined when:
* - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing a valid `targetElement` parameter.
* - [[StreamManager.createVideoElement]] has been called.
*
* This property is undefined when:
* - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing *null* or *undefined* as `targetElement` parameter.
* - [[StreamManager.addVideoElement]] has been called.
*/
targetElement?: HTMLElement;
/**
* How the DOM video element should be inserted with respect to `targetElement`. This property is defined when:
* - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing a valid `targetElement` parameter.
* - [[StreamManager.createVideoElement]] has been called.
*
* This property is undefined when:
* - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing *null* or *undefined* as `targetElement` parameter.
* - [[StreamManager.addVideoElement]] has been called.
*/
insertMode?: VideoInsertMode;
/**
* @hidden
*/
canplayListenerAdded: boolean;
}

View File

@ -1,43 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { VideoInsertMode } from '../../Enums/VideoInsertMode';
/**
* See [[Session.subscribe]]
*/
export interface SubscriberProperties {
/**
* How the video element of the subscriber should be inserted in the DOM
* @default VideoInsertMode.APPEND
*/
insertMode?: VideoInsertMode | string;
/**
* Whether to initially subscribe to the audio track of the stream or not. You can change the audio state later with [[Subscriber.subscribeToAudio]]
* @default true
*/
subscribeToAudio?: boolean;
/**
* Whether to initially subscribe to the video track of the stream or not. You can change the video state later with [[Subscriber.subscribeToVideo]]
* @default true
*/
subscribeToVideo?: boolean;
}

View File

@ -1,66 +0,0 @@
function Mapper()
{
var sources = {};
this.forEach = function(callback)
{
for(var key in sources)
{
var source = sources[key];
for(var key2 in source)
callback(source[key2]);
};
};
this.get = function(id, source)
{
var ids = sources[source];
if(ids == undefined)
return undefined;
return ids[id];
};
this.remove = function(id, source)
{
var ids = sources[source];
if(ids == undefined)
return;
delete ids[id];
// Check it's empty
for(var i in ids){return false}
delete sources[source];
};
this.set = function(value, id, source)
{
if(value == undefined)
return this.remove(id, source);
var ids = sources[source];
if(ids == undefined)
sources[source] = ids = {};
ids[id] = value;
};
};
Mapper.prototype.pop = function(id, source)
{
var value = this.get(id, source);
if(value == undefined)
return undefined;
this.remove(id, source);
return value;
};
module.exports = Mapper;

View File

@ -1,21 +0,0 @@
/*
* (C) Copyright 2014 Kurento (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
var JsonRpcClient = require('./jsonrpcclient');
exports.JsonRpcClient = JsonRpcClient;

View File

@ -1,292 +0,0 @@
/*
* (C) Copyright 2014 Kurento (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
var RpcBuilder = require('../');
var WebSocketWithReconnection = require('./transports/webSocketWithReconnection');
Date.now = Date.now || function () {
return +new Date;
};
var PING_INTERVAL = 5000;
var RECONNECTING = 'RECONNECTING';
var CONNECTED = 'CONNECTED';
var DISCONNECTED = 'DISCONNECTED';
var Logger = console;
/**
*
* heartbeat: interval in ms for each heartbeat message,
* sendCloseMessage : true / false, before closing the connection, it sends a closeSession message
* <pre>
* ws : {
* uri : URI to conntect to,
* useSockJS : true (use SockJS) / false (use WebSocket) by default,
* onconnected : callback method to invoke when connection is successful,
* ondisconnect : callback method to invoke when the connection is lost (max retries for reconnecting reached),
* onreconnecting : callback method to invoke when the client is reconnecting,
* onreconnected : callback method to invoke when the client successfully reconnects,
* onerror : callback method to invoke when there is an error
* },
* rpc : {
* requestTimeout : timeout for a request,
* sessionStatusChanged: callback method for changes in session status,
* mediaRenegotiation: mediaRenegotiation
* }
* </pre>
*/
function JsonRpcClient(configuration) {
var self = this;
var wsConfig = configuration.ws;
var notReconnectIfNumLessThan = -1;
var pingNextNum = 0;
var enabledPings = true;
var pingPongStarted = false;
var pingInterval;
var status = DISCONNECTED;
var onreconnecting = wsConfig.onreconnecting;
var onreconnected = wsConfig.onreconnected;
var onconnected = wsConfig.onconnected;
var onerror = wsConfig.onerror;
configuration.rpc.pull = function (params, request) {
request.reply(null, "push");
}
wsConfig.onreconnecting = function () {
Logger.debug("--------- ONRECONNECTING -----------");
if (status === RECONNECTING) {
Logger.error("Websocket already in RECONNECTING state when receiving a new ONRECONNECTING message. Ignoring it");
return;
}
stopPing();
status = RECONNECTING;
if (onreconnecting) {
onreconnecting();
}
}
wsConfig.onreconnected = function () {
Logger.debug("--------- ONRECONNECTED -----------");
if (status === CONNECTED) {
Logger.error("Websocket already in CONNECTED state when receiving a new ONRECONNECTED message. Ignoring it");
return;
}
status = CONNECTED;
updateNotReconnectIfLessThan();
if (onreconnected) {
onreconnected();
}
}
wsConfig.onconnected = function () {
Logger.debug("--------- ONCONNECTED -----------");
if (status === CONNECTED) {
Logger.error("Websocket already in CONNECTED state when receiving a new ONCONNECTED message. Ignoring it");
return;
}
status = CONNECTED;
enabledPings = true;
usePing();
if (onconnected) {
onconnected();
}
}
wsConfig.onerror = function (error) {
Logger.debug("--------- ONERROR -----------");
status = DISCONNECTED;
stopPing();
if (onerror) {
onerror(error);
}
}
var ws = new WebSocketWithReconnection(wsConfig);
Logger.debug('Connecting websocket to URI: ' + wsConfig.uri);
var rpcBuilderOptions = {
request_timeout: configuration.rpc.requestTimeout,
ping_request_timeout: configuration.rpc.heartbeatRequestTimeout
};
var rpc = new RpcBuilder(RpcBuilder.packers.JsonRPC, rpcBuilderOptions, ws,
function (request) {
Logger.debug('Received request: ' + JSON.stringify(request));
try {
var func = configuration.rpc[request.method];
if (func === undefined) {
Logger.error("Method " + request.method + " not registered in client");
} else {
func(request.params, request);
}
} catch (err) {
Logger.error('Exception processing request: ' + JSON.stringify(request));
Logger.error(err);
}
});
this.send = function (method, params, callback) {
if (method !== 'ping') {
Logger.debug('Request: method:' + method + " params:" + JSON.stringify(params));
}
var requestTime = Date.now();
rpc.encode(method, params, function (error, result) {
if (error) {
try {
Logger.error("ERROR:" + error.message + " in Request: method:" +
method + " params:" + JSON.stringify(params) + " request:" +
error.request);
if (error.data) {
Logger.error("ERROR DATA:" + JSON.stringify(error.data));
}
} catch (e) {}
error.requestTime = requestTime;
}
if (callback) {
if (result != undefined && result.value !== 'pong') {
Logger.debug('Response: ' + JSON.stringify(result));
}
callback(error, result);
}
});
}
function updateNotReconnectIfLessThan() {
Logger.debug("notReconnectIfNumLessThan = " + pingNextNum + ' (old=' +
notReconnectIfNumLessThan + ')');
notReconnectIfNumLessThan = pingNextNum;
}
function sendPing() {
if (enabledPings) {
var params = null;
if (pingNextNum == 0 || pingNextNum == notReconnectIfNumLessThan) {
params = {
interval: configuration.heartbeat || PING_INTERVAL
};
}
pingNextNum++;
self.send('ping', params, (function (pingNum) {
return function (error, result) {
if (error) {
Logger.debug("Error in ping request #" + pingNum + " (" +
error.message + ")");
if (pingNum > notReconnectIfNumLessThan) {
enabledPings = false;
updateNotReconnectIfLessThan();
Logger.debug("Server did not respond to ping message #" +
pingNum + ". Reconnecting... ");
ws.reconnectWs();
}
}
}
})(pingNextNum));
} else {
Logger.debug("Trying to send ping, but ping is not enabled");
}
}
/*
* If configuration.hearbeat has any value, the ping-pong will work with the interval
* of configuration.hearbeat
*/
function usePing() {
if (!pingPongStarted) {
Logger.debug("Starting ping (if configured)")
pingPongStarted = true;
if (configuration.heartbeat != undefined) {
pingInterval = setInterval(sendPing, configuration.heartbeat);
sendPing();
}
}
}
function stopPing() {
clearInterval(pingInterval);
pingPongStarted = false;
enabledPings = false;
pingNextNum = -1;
rpc.cancel();
}
this.close = function (code, reason) {
Logger.debug("Closing with code: " + code + " because: " + reason);
if (pingInterval != undefined) {
Logger.debug("Clearing ping interval");
clearInterval(pingInterval);
}
pingPongStarted = false;
enabledPings = false;
if (configuration.sendCloseMessage) {
Logger.debug("Sending close message")
this.send('closeSession', null, function (error, result) {
if (error) {
Logger.error("Error sending close message: " + JSON.stringify(error));
}
ws.close(code, reason);
});
} else {
ws.close(code, reason);
}
}
// This method is only for testing
this.forceClose = function (millis) {
ws.forceClose(millis);
}
this.reconnect = function () {
ws.reconnectWs();
}
this.resetPing = function () {
enabledPings = true;
pingNextNum = 0;
usePing();
}
}
module.exports = JsonRpcClient;

View File

@ -1,21 +0,0 @@
/*
* (C) Copyright 2014 Kurento (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
var WebSocketWithReconnection = require('./webSocketWithReconnection');
exports.WebSocketWithReconnection = WebSocketWithReconnection;

View File

@ -1,242 +0,0 @@
/*
* (C) Copyright 2013-2015 Kurento (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
"use strict";
var BrowserWebSocket = global.WebSocket || global.MozWebSocket;
var Logger = console;
/**
* Get either the `WebSocket` or `MozWebSocket` globals
* in the browser or try to resolve WebSocket-compatible
* interface exposed by `ws` for Node-like environment.
*/
/*var WebSocket = BrowserWebSocket;
if (!WebSocket && typeof window === 'undefined') {
try {
WebSocket = require('ws');
} catch (e) { }
}*/
//var SockJS = require('sockjs-client');
var MAX_RETRIES = 2000; // Forever...
var RETRY_TIME_MS = 3000; // FIXME: Implement exponential wait times...
var CONNECTING = 0;
var OPEN = 1;
var CLOSING = 2;
var CLOSED = 3;
/*
config = {
uri : wsUri,
useSockJS : true (use SockJS) / false (use WebSocket) by default,
onconnected : callback method to invoke when connection is successful,
ondisconnect : callback method to invoke when the connection is lost (max retries for reconnecting reached),
onreconnecting : callback method to invoke when the client is reconnecting,
onreconnected : callback method to invoke when the client successfully reconnects,
};
*/
function WebSocketWithReconnection(config) {
var closing = false;
var registerMessageHandler;
var wsUri = config.uri;
var useSockJS = config.useSockJS;
var reconnecting = false;
var forcingDisconnection = false;
var ws;
if (useSockJS) {
ws = new SockJS(wsUri);
} else {
ws = new WebSocket(wsUri);
}
ws.onopen = function () {
logConnected(ws, wsUri);
if (config.onconnected) {
config.onconnected();
}
};
ws.onerror = function (error) {
Logger.error("Could not connect to " + wsUri + " (invoking onerror if defined)", error);
if (config.onerror) {
config.onerror(error);
}
};
function logConnected(ws, wsUri) {
try {
Logger.debug("WebSocket connected to " + wsUri);
} catch (e) {
Logger.error(e);
}
}
var reconnectionOnClose = function () {
if (ws.readyState === CLOSED) {
if (closing) {
Logger.debug("Connection closed by user");
} else {
Logger.debug("Connection closed unexpectecly. Reconnecting...");
reconnectToSameUri(MAX_RETRIES, 1);
}
} else {
Logger.debug("Close callback from previous websocket. Ignoring it");
}
};
ws.onclose = reconnectionOnClose;
function reconnectToSameUri(maxRetries, numRetries) {
Logger.debug("reconnectToSameUri (attempt #" + numRetries + ", max=" + maxRetries + ")");
if (numRetries === 1) {
if (reconnecting) {
Logger.warn("Trying to reconnectToNewUri when reconnecting... Ignoring this reconnection.")
return;
} else {
reconnecting = true;
}
if (config.onreconnecting) {
config.onreconnecting();
}
}
if (forcingDisconnection) {
reconnectToNewUri(maxRetries, numRetries, wsUri);
} else {
if (config.newWsUriOnReconnection) {
config.newWsUriOnReconnection(function (error, newWsUri) {
if (error) {
Logger.debug(error);
setTimeout(function () {
reconnectToSameUri(maxRetries, numRetries + 1);
}, RETRY_TIME_MS);
} else {
reconnectToNewUri(maxRetries, numRetries, newWsUri);
}
})
} else {
reconnectToNewUri(maxRetries, numRetries, wsUri);
}
}
}
// TODO Test retries. How to force not connection?
function reconnectToNewUri(maxRetries, numRetries, reconnectWsUri) {
Logger.debug("Reconnection attempt #" + numRetries);
ws.close();
wsUri = reconnectWsUri || wsUri;
var newWs;
if (useSockJS) {
newWs = new SockJS(wsUri);
} else {
newWs = new WebSocket(wsUri);
}
newWs.onopen = function () {
Logger.debug("Reconnected after " + numRetries + " attempts...");
logConnected(newWs, wsUri);
reconnecting = false;
registerMessageHandler();
if (config.onreconnected()) {
config.onreconnected();
}
newWs.onclose = reconnectionOnClose;
};
var onErrorOrClose = function (error) {
Logger.warn("Reconnection error: ", error);
if (numRetries === maxRetries) {
if (config.ondisconnect) {
config.ondisconnect();
}
} else {
setTimeout(function () {
reconnectToSameUri(maxRetries, numRetries + 1);
}, RETRY_TIME_MS);
}
};
newWs.onerror = onErrorOrClose;
ws = newWs;
}
this.close = function () {
closing = true;
ws.close();
};
// This method is only for testing
this.forceClose = function (millis) {
Logger.debug("Testing: Force WebSocket close");
if (millis) {
Logger.debug("Testing: Change wsUri for " + millis + " millis to simulate net failure");
var goodWsUri = wsUri;
wsUri = "wss://21.234.12.34.4:443/";
forcingDisconnection = true;
setTimeout(function () {
Logger.debug("Testing: Recover good wsUri " + goodWsUri);
wsUri = goodWsUri;
forcingDisconnection = false;
}, millis);
}
ws.close();
};
this.reconnectWs = function () {
Logger.debug("reconnectWs");
reconnectToSameUri(MAX_RETRIES, 1);
};
this.send = function (message) {
ws.send(message);
};
this.addEventListener = function (type, callback) {
registerMessageHandler = function () {
ws.addEventListener(type, callback);
};
registerMessageHandler();
};
}
module.exports = WebSocketWithReconnection;

View File

@ -1,822 +0,0 @@
/*
* (C) Copyright 2014 Kurento (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
var defineProperty_IE8 = false
if(Object.defineProperty)
{
try
{
Object.defineProperty({}, "x", {});
}
catch(e)
{
defineProperty_IE8 = true
}
}
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof fNOP && oThis
? this
: oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
};
fNOP.prototype = this.prototype;
fBound.prototype = new fNOP();
return fBound;
};
}
var EventEmitter = require('events').EventEmitter;
var inherits = require('inherits');
var packers = require('./packers');
var Mapper = require('./Mapper');
var BASE_TIMEOUT = 5000;
function unifyResponseMethods(responseMethods)
{
if(!responseMethods) return {};
for(var key in responseMethods)
{
var value = responseMethods[key];
if(typeof value == 'string')
responseMethods[key] =
{
response: value
}
};
return responseMethods;
};
function unifyTransport(transport)
{
if(!transport) return;
// Transport as a function
if(transport instanceof Function)
return {send: transport};
// WebSocket & DataChannel
if(transport.send instanceof Function)
return transport;
// Message API (Inter-window & WebWorker)
if(transport.postMessage instanceof Function)
{
transport.send = transport.postMessage;
return transport;
}
// Stream API
if(transport.write instanceof Function)
{
transport.send = transport.write;
return transport;
}
// Transports that only can receive messages, but not send
if(transport.onmessage !== undefined) return;
if(transport.pause instanceof Function) return;
throw new SyntaxError("Transport is not a function nor a valid object");
};
/**
* Representation of a RPC notification
*
* @class
*
* @constructor
*
* @param {String} method -method of the notification
* @param params - parameters of the notification
*/
function RpcNotification(method, params)
{
if(defineProperty_IE8)
{
this.method = method
this.params = params
}
else
{
Object.defineProperty(this, 'method', {value: method, enumerable: true});
Object.defineProperty(this, 'params', {value: params, enumerable: true});
}
};
/**
* @class
*
* @constructor
*
* @param {object} packer
*
* @param {object} [options]
*
* @param {object} [transport]
*
* @param {Function} [onRequest]
*/
function RpcBuilder(packer, options, transport, onRequest)
{
var self = this;
if(!packer)
throw new SyntaxError('Packer is not defined');
if(!packer.pack || !packer.unpack)
throw new SyntaxError('Packer is invalid');
var responseMethods = unifyResponseMethods(packer.responseMethods);
if(options instanceof Function)
{
if(transport != undefined)
throw new SyntaxError("There can't be parameters after onRequest");
onRequest = options;
transport = undefined;
options = undefined;
};
if(options && options.send instanceof Function)
{
if(transport && !(transport instanceof Function))
throw new SyntaxError("Only a function can be after transport");
onRequest = transport;
transport = options;
options = undefined;
};
if(transport instanceof Function)
{
if(onRequest != undefined)
throw new SyntaxError("There can't be parameters after onRequest");
onRequest = transport;
transport = undefined;
};
if(transport && transport.send instanceof Function)
if(onRequest && !(onRequest instanceof Function))
throw new SyntaxError("Only a function can be after transport");
options = options || {};
EventEmitter.call(this);
if(onRequest)
this.on('request', onRequest);
if(defineProperty_IE8)
this.peerID = options.peerID
else
Object.defineProperty(this, 'peerID', {value: options.peerID});
var max_retries = options.max_retries || 0;
function transportMessage(event)
{
self.decode(event.data || event);
};
this.getTransport = function()
{
return transport;
}
this.setTransport = function(value)
{
// Remove listener from old transport
if(transport)
{
// W3C transports
if(transport.removeEventListener)
transport.removeEventListener('message', transportMessage);
// Node.js Streams API
else if(transport.removeListener)
transport.removeListener('data', transportMessage);
};
// Set listener on new transport
if(value)
{
// W3C transports
if(value.addEventListener)
value.addEventListener('message', transportMessage);
// Node.js Streams API
else if(value.addListener)
value.addListener('data', transportMessage);
};
transport = unifyTransport(value);
}
if(!defineProperty_IE8)
Object.defineProperty(this, 'transport',
{
get: this.getTransport.bind(this),
set: this.setTransport.bind(this)
})
this.setTransport(transport);
var request_timeout = options.request_timeout || BASE_TIMEOUT;
var ping_request_timeout = options.ping_request_timeout || request_timeout;
var response_timeout = options.response_timeout || BASE_TIMEOUT;
var duplicates_timeout = options.duplicates_timeout || BASE_TIMEOUT;
var requestID = 0;
var requests = new Mapper();
var responses = new Mapper();
var processedResponses = new Mapper();
var message2Key = {};
/**
* Store the response to prevent to process duplicate request later
*/
function storeResponse(message, id, dest)
{
var response =
{
message: message,
/** Timeout to auto-clean old responses */
timeout: setTimeout(function()
{
responses.remove(id, dest);
},
response_timeout)
};
responses.set(response, id, dest);
};
/**
* Store the response to ignore duplicated messages later
*/
function storeProcessedResponse(ack, from)
{
var timeout = setTimeout(function()
{
processedResponses.remove(ack, from);
},
duplicates_timeout);
processedResponses.set(timeout, ack, from);
};
/**
* Representation of a RPC request
*
* @class
* @extends RpcNotification
*
* @constructor
*
* @param {String} method -method of the notification
* @param params - parameters of the notification
* @param {Integer} id - identifier of the request
* @param [from] - source of the notification
*/
function RpcRequest(method, params, id, from, transport)
{
RpcNotification.call(this, method, params);
this.getTransport = function()
{
return transport;
}
this.setTransport = function(value)
{
transport = unifyTransport(value);
}
if(!defineProperty_IE8)
Object.defineProperty(this, 'transport',
{
get: this.getTransport.bind(this),
set: this.setTransport.bind(this)
})
var response = responses.get(id, from);
/**
* @constant {Boolean} duplicated
*/
if(!(transport || self.getTransport()))
{
if(defineProperty_IE8)
this.duplicated = Boolean(response)
else
Object.defineProperty(this, 'duplicated',
{
value: Boolean(response)
});
}
var responseMethod = responseMethods[method];
this.pack = packer.pack.bind(packer, this, id)
/**
* Generate a response to this request
*
* @param {Error} [error]
* @param {*} [result]
*
* @returns {string}
*/
this.reply = function(error, result, transport)
{
// Fix optional parameters
if(error instanceof Function || error && error.send instanceof Function)
{
if(result != undefined)
throw new SyntaxError("There can't be parameters after callback");
transport = error;
result = null;
error = undefined;
}
else if(result instanceof Function
|| result && result.send instanceof Function)
{
if(transport != undefined)
throw new SyntaxError("There can't be parameters after callback");
transport = result;
result = null;
};
transport = unifyTransport(transport);
// Duplicated request, remove old response timeout
if(response)
clearTimeout(response.timeout);
if(from != undefined)
{
if(error)
error.dest = from;
if(result)
result.dest = from;
};
var message;
// New request or overriden one, create new response with provided data
if(error || result != undefined)
{
if(self.peerID != undefined)
{
if(error)
error.from = self.peerID;
else
result.from = self.peerID;
}
// Protocol indicates that responses has own request methods
if(responseMethod)
{
if(responseMethod.error == undefined && error)
message =
{
error: error
};
else
{
var method = error
? responseMethod.error
: responseMethod.response;
message =
{
method: method,
params: error || result
};
}
}
else
message =
{
error: error,
result: result
};
message = packer.pack(message, id);
}
// Duplicate & not-overriden request, re-send old response
else if(response)
message = response.message;
// New empty reply, response null value
else
message = packer.pack({result: null}, id);
// Store the response to prevent to process a duplicated request later
storeResponse(message, id, from);
// Return the stored response so it can be directly send back
transport = transport || this.getTransport() || self.getTransport();
if(transport)
return transport.send(message);
return message;
}
};
inherits(RpcRequest, RpcNotification);
function cancel(message)
{
var key = message2Key[message];
if(!key) return;
delete message2Key[message];
var request = requests.pop(key.id, key.dest);
if(!request) return;
clearTimeout(request.timeout);
// Start duplicated responses timeout
storeProcessedResponse(key.id, key.dest);
};
/**
* Allow to cancel a request and don't wait for a response
*
* If `message` is not given, cancel all the request
*/
this.cancel = function(message)
{
if(message) return cancel(message);
for(var message in message2Key)
cancel(message);
};
this.close = function()
{
// Prevent to receive new messages
var transport = this.getTransport();
if(transport && transport.close)
transport.close(4003, "Cancel request");
// Request & processed responses
this.cancel();
processedResponses.forEach(clearTimeout);
// Responses
responses.forEach(function(response)
{
clearTimeout(response.timeout);
});
};
/**
* Generates and encode a JsonRPC 2.0 message
*
* @param {String} method -method of the notification
* @param params - parameters of the notification
* @param [dest] - destination of the notification
* @param {object} [transport] - transport where to send the message
* @param [callback] - function called when a response to this request is
* received. If not defined, a notification will be send instead
*
* @returns {string} A raw JsonRPC 2.0 request or notification string
*/
this.encode = function(method, params, dest, transport, callback)
{
// Fix optional parameters
if(params instanceof Function)
{
if(dest != undefined)
throw new SyntaxError("There can't be parameters after callback");
callback = params;
transport = undefined;
dest = undefined;
params = undefined;
}
else if(dest instanceof Function)
{
if(transport != undefined)
throw new SyntaxError("There can't be parameters after callback");
callback = dest;
transport = undefined;
dest = undefined;
}
else if(transport instanceof Function)
{
if(callback != undefined)
throw new SyntaxError("There can't be parameters after callback");
callback = transport;
transport = undefined;
};
if(self.peerID != undefined)
{
params = params || {};
params.from = self.peerID;
};
if(dest != undefined)
{
params = params || {};
params.dest = dest;
};
// Encode message
var message =
{
method: method,
params: params
};
if(callback)
{
var id = requestID++;
var retried = 0;
message = packer.pack(message, id);
function dispatchCallback(error, result)
{
self.cancel(message);
callback(error, result);
};
var request =
{
message: message,
callback: dispatchCallback,
responseMethods: responseMethods[method] || {}
};
var encode_transport = unifyTransport(transport);
function sendRequest(transport)
{
var rt = (method === 'ping' ? ping_request_timeout : request_timeout);
request.timeout = setTimeout(timeout, rt*Math.pow(2, retried++));
message2Key[message] = {id: id, dest: dest};
requests.set(request, id, dest);
transport = transport || encode_transport || self.getTransport();
if(transport)
return transport.send(message);
return message;
};
function retry(transport)
{
transport = unifyTransport(transport);
console.warn(retried+' retry for request message:',message);
var timeout = processedResponses.pop(id, dest);
clearTimeout(timeout);
return sendRequest(transport);
};
function timeout()
{
if(retried < max_retries)
return retry(transport);
var error = new Error('Request has timed out');
error.request = message;
error.retry = retry;
dispatchCallback(error)
};
return sendRequest(transport);
};
// Return the packed message
message = packer.pack(message);
transport = transport || this.getTransport();
if(transport)
return transport.send(message);
return message;
};
/**
* Decode and process a JsonRPC 2.0 message
*
* @param {string} message - string with the content of the message
*
* @returns {RpcNotification|RpcRequest|undefined} - the representation of the
* notification or the request. If a response was processed, it will return
* `undefined` to notify that it was processed
*
* @throws {TypeError} - Message is not defined
*/
this.decode = function(message, transport)
{
if(!message)
throw new TypeError("Message is not defined");
try
{
message = packer.unpack(message);
}
catch(e)
{
// Ignore invalid messages
return console.debug(e, message);
};
var id = message.id;
var ack = message.ack;
var method = message.method;
var params = message.params || {};
var from = params.from;
var dest = params.dest;
// Ignore messages send by us
if(self.peerID != undefined && from == self.peerID) return;
// Notification
if(id == undefined && ack == undefined)
{
var notification = new RpcNotification(method, params);
if(self.emit('request', notification)) return;
return notification;
};
function processRequest()
{
// If we have a transport and it's a duplicated request, reply inmediatly
transport = unifyTransport(transport) || self.getTransport();
if(transport)
{
var response = responses.get(id, from);
if(response)
return transport.send(response.message);
};
var idAck = (id != undefined) ? id : ack;
var request = new RpcRequest(method, params, idAck, from, transport);
if(self.emit('request', request)) return;
return request;
};
function processResponse(request, error, result)
{
request.callback(error, result);
};
function duplicatedResponse(timeout)
{
console.warn("Response already processed", message);
// Update duplicated responses timeout
clearTimeout(timeout);
storeProcessedResponse(ack, from);
};
// Request, or response with own method
if(method)
{
// Check if it's a response with own method
if(dest == undefined || dest == self.peerID)
{
var request = requests.get(ack, from);
if(request)
{
var responseMethods = request.responseMethods;
if(method == responseMethods.error)
return processResponse(request, params);
if(method == responseMethods.response)
return processResponse(request, null, params);
return processRequest();
}
var processed = processedResponses.get(ack, from);
if(processed)
return duplicatedResponse(processed);
}
// Request
return processRequest();
};
var error = message.error;
var result = message.result;
// Ignore responses not send to us
if(error && error.dest && error.dest != self.peerID) return;
if(result && result.dest && result.dest != self.peerID) return;
// Response
var request = requests.get(ack, from);
if(!request)
{
var processed = processedResponses.get(ack, from);
if(processed)
return duplicatedResponse(processed);
return console.warn("No callback was defined for this message", message);
};
// Process response
processResponse(request, error, result);
};
};
inherits(RpcBuilder, EventEmitter);
RpcBuilder.RpcNotification = RpcNotification;
module.exports = RpcBuilder;
var clients = require('./clients');
var transports = require('./clients/transports');
RpcBuilder.clients = clients;
RpcBuilder.clients.transports = transports;
RpcBuilder.packers = packers;

View File

@ -1,103 +0,0 @@
/**
* JsonRPC 2.0 packer
*/
/**
* Pack a JsonRPC 2.0 message
*
* @param {Object} message - object to be packaged. It requires to have all the
* fields needed by the JsonRPC 2.0 message that it's going to be generated
*
* @return {String} - the stringified JsonRPC 2.0 message
*/
function pack(message, id)
{
var result =
{
jsonrpc: "2.0"
};
// Request
if(message.method)
{
result.method = message.method;
if(message.params)
result.params = message.params;
// Request is a notification
if(id != undefined)
result.id = id;
}
// Response
else if(id != undefined)
{
if(message.error)
{
if(message.result !== undefined)
throw new TypeError("Both result and error are defined");
result.error = message.error;
}
else if(message.result !== undefined)
result.result = message.result;
else
throw new TypeError("No result or error is defined");
result.id = id;
};
return JSON.stringify(result);
};
/**
* Unpack a JsonRPC 2.0 message
*
* @param {String} message - string with the content of the JsonRPC 2.0 message
*
* @throws {TypeError} - Invalid JsonRPC version
*
* @return {Object} - object filled with the JsonRPC 2.0 message content
*/
function unpack(message)
{
var result = message;
if(typeof message === 'string' || message instanceof String) {
result = JSON.parse(message);
}
// Check if it's a valid message
var version = result.jsonrpc;
if(version !== '2.0')
throw new TypeError("Invalid JsonRPC version '" + version + "': " + message);
// Response
if(result.method == undefined)
{
if(result.id == undefined)
throw new TypeError("Invalid message: "+message);
var result_defined = result.result !== undefined;
var error_defined = result.error !== undefined;
// Check only result or error is defined, not both or none
if(result_defined && error_defined)
throw new TypeError("Both result and error are defined: "+message);
if(!result_defined && !error_defined)
throw new TypeError("No result or error is defined: "+message);
result.ack = result.id;
delete result.id;
}
// Return unpacked message
return result;
};
exports.pack = pack;
exports.unpack = unpack;

View File

@ -1,13 +0,0 @@
function pack(message)
{
throw new TypeError("Not yet implemented");
};
function unpack(message)
{
throw new TypeError("Not yet implemented");
};
exports.pack = pack;
exports.unpack = unpack;

View File

@ -1,6 +0,0 @@
var JsonRPC = require('./JsonRPC');
var XmlRPC = require('./XmlRPC');
exports.JsonRPC = JsonRPC;
exports.XmlRPC = XmlRPC;

View File

@ -1,220 +0,0 @@
// Last time updated on June 08, 2018
// Latest file can be found here: https://cdn.webrtc-experiment.com/getScreenId.js
// Muaz Khan - www.MuazKhan.com
// MIT License - www.WebRTC-Experiment.com/licence
// Documentation - https://github.com/muaz-khan/getScreenId.
// ______________
// getScreenId.js
/*
getScreenId(function (error, sourceId, screen_constraints) {
// error == null || 'permission-denied' || 'not-installed' || 'installed-disabled' || 'not-chrome'
// sourceId == null || 'string' || 'firefox'
if(microsoftEdge) {
navigator.getDisplayMedia(screen_constraints).then(onSuccess, onFailure);
}
else {
navigator.mediaDevices.getUserMedia(screen_constraints).then(onSuccess)catch(onFailure);
}
}, 'pass second parameter only if you want system audio');
*/
window.getScreenId = function (firefoxString, callback, custom_parameter) {
if (navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveOrOpenBlob || !!navigator.msSaveBlob)) {
// microsoft edge => navigator.getDisplayMedia(screen_constraints).then(onSuccess, onFailure);
callback({
video: true
});
return;
}
// for Firefox:
// sourceId == 'firefox'
// screen_constraints = {...}
if (!!navigator.mozGetUserMedia) {
callback(null, 'firefox', {
video: {
mozMediaSource: firefoxString,
mediaSource: firefoxString
}
});
return;
}
window.addEventListener('message', onIFrameCallback);
function onIFrameCallback(event) {
if (!event.data) return;
if (event.data.chromeMediaSourceId) {
if (event.data.chromeMediaSourceId === 'PermissionDeniedError') {
callback('permission-denied');
} else {
callback(null, event.data.chromeMediaSourceId, getScreenConstraints(null, event.data.chromeMediaSourceId, event.data.canRequestAudioTrack));
}
// this event listener is no more needed
window.removeEventListener('message', onIFrameCallback);
}
if (event.data.chromeExtensionStatus) {
callback(event.data.chromeExtensionStatus, null, getScreenConstraints(event.data.chromeExtensionStatus));
// this event listener is no more needed
window.removeEventListener('message', onIFrameCallback);
}
}
if (!custom_parameter) {
setTimeout(postGetSourceIdMessage, 100);
}
else {
setTimeout(function () {
postGetSourceIdMessage(custom_parameter);
}, 100);
}
};
function getScreenConstraints(error, sourceId, canRequestAudioTrack) {
var screen_constraints = {
audio: false,
video: {
mandatory: {
chromeMediaSource: error ? 'screen' : 'desktop',
maxWidth: window.screen.width > 1920 ? window.screen.width : 1920,
maxHeight: window.screen.height > 1080 ? window.screen.height : 1080
},
optional: []
}
};
if (!!canRequestAudioTrack) {
screen_constraints.audio = {
mandatory: {
chromeMediaSource: error ? 'screen' : 'desktop',
// echoCancellation: true
},
optional: []
};
}
if (sourceId) {
screen_constraints.video.mandatory.chromeMediaSourceId = sourceId;
if (screen_constraints.audio && screen_constraints.audio.mandatory) {
screen_constraints.audio.mandatory.chromeMediaSourceId = sourceId;
}
}
return screen_constraints;
}
function postGetSourceIdMessage(custom_parameter) {
if (!iframe) {
loadIFrame(function () {
postGetSourceIdMessage(custom_parameter);
});
return;
}
if (!iframe.isLoaded) {
setTimeout(function () {
postGetSourceIdMessage(custom_parameter);
}, 100);
return;
}
if (!custom_parameter) {
iframe.contentWindow.postMessage({
captureSourceId: true
}, '*');
}
else if (!!custom_parameter.forEach) {
iframe.contentWindow.postMessage({
captureCustomSourceId: custom_parameter
}, '*');
}
else {
iframe.contentWindow.postMessage({
captureSourceIdWithAudio: true
}, '*');
}
}
var iframe;
// this function is used in RTCMultiConnection v3
window.getScreenConstraints = function (callback) {
loadIFrame(function () {
getScreenId(function (error, sourceId, screen_constraints) {
if (!screen_constraints) {
screen_constraints = {
video: true
};
}
callback(error, screen_constraints.video);
});
});
};
function loadIFrame(loadCallback) {
if (iframe) {
loadCallback();
return;
}
iframe = document.createElement('iframe');
iframe.onload = function () {
iframe.isLoaded = true;
loadCallback();
};
iframe.src = 'https://openvidu.github.io/openvidu-screen-sharing-chrome-extension/';
iframe.style.display = 'none';
(document.body || document.documentElement).appendChild(iframe);
}
window.getChromeExtensionStatus = function (callback) {
// for Firefox:
if (!!navigator.mozGetUserMedia) {
callback('installed-enabled');
return;
}
window.addEventListener('message', onIFrameCallback);
function onIFrameCallback(event) {
if (!event.data) return;
if (event.data.chromeExtensionStatus) {
callback(event.data.chromeExtensionStatus);
// this event listener is no more needed
window.removeEventListener('message', onIFrameCallback);
}
}
setTimeout(postGetChromeExtensionStatusMessage, 100);
};
function postGetChromeExtensionStatusMessage() {
if (!iframe) {
loadIFrame(postGetChromeExtensionStatusMessage);
return;
}
if (!iframe.isLoaded) {
setTimeout(postGetChromeExtensionStatusMessage, 100);
return;
}
iframe.contentWindow.postMessage({
getChromeExtensionStatus: true
}, '*');
}
exports.getScreenId = getScreenId;

View File

@ -1,164 +0,0 @@
// global variables
var chromeMediaSource = 'screen';
var sourceId;
var screenCallback;
var isFirefox = typeof window.InstallTrigger !== 'undefined';
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
var isChrome = !!window.chrome && !isOpera;
window.addEventListener('message', function (event) {
if (event.origin != window.location.origin) {
return;
}
onMessageCallback(event.data);
});
// and the function that handles received messages
function onMessageCallback(data) {
// "cancel" button is clicked
if (data == 'PermissionDeniedError') {
if (screenCallback)
return screenCallback('PermissionDeniedError');
else
throw new Error('PermissionDeniedError');
}
// extension notified his presence
if (data == 'rtcmulticonnection-extension-loaded') {
chromeMediaSource = 'desktop';
}
// extension shared temp sourceId
if (data.sourceId && screenCallback) {
screenCallback(sourceId = data.sourceId, data.canRequestAudioTrack === true);
}
}
// this method can be used to check if chrome extension is installed & enabled.
function isChromeExtensionAvailable(callback) {
if (!callback) return;
if (chromeMediaSource == 'desktop') return callback(true);
// ask extension if it is available
window.postMessage('are-you-there', '*');
setTimeout(function () {
if (chromeMediaSource == 'screen') {
callback(false);
} else callback(true);
}, 2000);
}
// this function can be used to get "source-id" from the extension
function getSourceId(callback) {
if (!callback)
throw '"callback" parameter is mandatory.';
if (sourceId)
return callback(sourceId);
screenCallback = callback;
window.postMessage('get-sourceId', '*');
}
// this function can be used to get "source-id" from the extension
function getCustomSourceId(arr, callback) {
if (!arr || !arr.forEach) throw '"arr" parameter is mandatory and it must be an array.';
if (!callback) throw '"callback" parameter is mandatory.';
if (sourceId) return callback(sourceId);
screenCallback = callback;
window.postMessage({
'get-custom-sourceId': arr
}, '*');
}
// this function can be used to get "source-id" from the extension
function getSourceIdWithAudio(callback) {
if (!callback) throw '"callback" parameter is mandatory.';
if (sourceId) return callback(sourceId);
screenCallback = callback;
window.postMessage('audio-plus-tab', '*');
}
function getChromeExtensionStatus(extensionid, callback) {
if (isFirefox)
return callback('not-chrome');
if (arguments.length != 2) {
callback = extensionid;
extensionid = 'lfcgfepafnobdloecchnfaclibenjold'; // default extension-id
}
var image = document.createElement('img');
image.src = 'chrome-extension://' + extensionid + '/icon.png';
image.onload = function () {
chromeMediaSource = 'screen';
window.postMessage('are-you-there', '*');
setTimeout(function () {
if (chromeMediaSource == 'screen') {
callback('installed-disabled');
} else
callback('installed-enabled');
}, 2000);
};
image.onerror = function () {
callback('not-installed');
};
}
function getScreenConstraintsWithAudio(callback) {
getScreenConstraints(callback, true);
}
// this function explains how to use above methods/objects
function getScreenConstraints(callback, captureSourceIdWithAudio) {
sourceId = '';
var firefoxScreenConstraints = {
mozMediaSource: 'window',
mediaSource: 'window'
};
if (isFirefox)
return callback(null, firefoxScreenConstraints);
// this statement defines getUserMedia constraints
// that will be used to capture content of screen
var screen_constraints = {
mandatory: {
chromeMediaSource: chromeMediaSource,
maxWidth: screen.width > 1920 ? screen.width : 1920,
maxHeight: screen.height > 1080 ? screen.height : 1080
},
optional: []
};
// this statement verifies chrome extension availability
// if installed and available then it will invoke extension API
// otherwise it will fallback to command-line based screen capturing API
if (chromeMediaSource == 'desktop' && !sourceId) {
if (captureSourceIdWithAudio) {
getSourceIdWithAudio(function (sourceId, canRequestAudioTrack) {
screen_constraints.mandatory.chromeMediaSourceId = sourceId;
if (canRequestAudioTrack) {
screen_constraints.canRequestAudioTrack = true;
}
callback(sourceId == 'PermissionDeniedError' ? sourceId : null, screen_constraints);
});
}
else {
getSourceId(function (sourceId) {
screen_constraints.mandatory.chromeMediaSourceId = sourceId;
callback(sourceId == 'PermissionDeniedError' ? sourceId : null, screen_constraints);
});
}
return;
}
// this statement sets gets 'sourceId" and sets "chromeMediaSourceId"
if (chromeMediaSource == 'desktop') {
screen_constraints.mandatory.chromeMediaSourceId = sourceId;
}
// now invoking native getUserMedia API
callback(null, screen_constraints);
}
exports.getScreenConstraints = getScreenConstraints;
exports.getScreenConstraintsWithAudio = getScreenConstraintsWithAudio;
exports.isChromeExtensionAvailable = isChromeExtensionAvailable;
exports.getChromeExtensionStatus = getChromeExtensionStatus;
exports.getSourceId = getSourceId;

View File

@ -1,308 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import freeice = require('freeice');
import uuid = require('uuid');
import platform = require('platform');
export interface WebRtcPeerConfiguration {
mediaConstraints: {
audio: boolean,
video: boolean
};
simulcast: boolean;
onicecandidate: (event) => void;
iceServers: RTCIceServer[] | undefined;
mediaStream?: MediaStream;
mode?: 'sendonly' | 'recvonly' | 'sendrecv';
id?: string;
}
export class WebRtcPeer {
pc: RTCPeerConnection;
id: string;
remoteCandidatesQueue: RTCIceCandidate[] = [];
localCandidatesQueue: RTCIceCandidate[] = [];
iceCandidateList: RTCIceCandidate[] = [];
private candidategatheringdone = false;
constructor(private configuration: WebRtcPeerConfiguration) {
this.configuration.iceServers = (!!this.configuration.iceServers && this.configuration.iceServers.length > 0) ? this.configuration.iceServers : freeice();
this.pc = new RTCPeerConnection({ iceServers: this.configuration.iceServers });
this.id = !!configuration.id ? configuration.id : uuid.v4();
this.pc.onicecandidate = event => {
if (!!event.candidate) {
const candidate: RTCIceCandidate = event.candidate;
if (candidate) {
this.localCandidatesQueue.push(<RTCIceCandidate>{ candidate: candidate.candidate });
this.candidategatheringdone = false;
this.configuration.onicecandidate(event.candidate);
} else if (!this.candidategatheringdone) {
this.candidategatheringdone = true;
}
}
};
this.pc.onsignalingstatechange = () => {
if (this.pc.signalingState === 'stable') {
while (this.iceCandidateList.length > 0) {
this.pc.addIceCandidate(<RTCIceCandidate>this.iceCandidateList.shift());
}
}
};
this.start();
}
/**
* This function creates the RTCPeerConnection object taking into account the
* properties received in the constructor. It starts the SDP negotiation
* process: generates the SDP offer and invokes the onsdpoffer callback. This
* callback is expected to send the SDP offer, in order to obtain an SDP
* answer from another peer.
*/
start(): Promise<any> {
return new Promise((resolve, reject) => {
if (this.pc.signalingState === 'closed') {
reject('The peer connection object is in "closed" state. This is most likely due to an invocation of the dispose method before accepting in the dialogue');
}
if (!!this.configuration.mediaStream) {
if (platform['isIonicIos']) {
// iOS Ionic. LIMITATION: must use deprecated WebRTC API
const pc2: any = this.pc;
pc2.addStream(this.configuration.mediaStream);
} else {
for (const track of this.configuration.mediaStream.getTracks()) {
this.pc.addTrack(track, this.configuration.mediaStream);
}
}
resolve();
}
});
}
/**
* This method frees the resources used by WebRtcPeer
*/
dispose(videoSourceIsMediaStreamTrack: boolean) {
console.debug('Disposing WebRtcPeer');
try {
if (this.pc) {
if (this.pc.signalingState === 'closed') {
return;
}
this.remoteCandidatesQueue = [];
this.localCandidatesQueue = [];
if (platform['isIonicIos']) {
// iOS Ionic. LIMITATION: must use deprecated WebRTC API
// Stop senders deprecated
const pc1: any = this.pc;
for (const sender of pc1.getLocalStreams()) {
if (!videoSourceIsMediaStreamTrack) {
(<MediaStream>sender).stop();
}
pc1.removeStream(sender);
}
// Stop receivers deprecated
for (const receiver of pc1.getRemoteStreams()) {
if (!!receiver.track) {
(<MediaStream>receiver).stop();
}
}
} else {
// Stop senders
for (const sender of this.pc.getSenders()) {
if (!videoSourceIsMediaStreamTrack) {
if (!!sender.track) {
sender.track.stop();
}
}
this.pc.removeTrack(sender);
}
// Stop receivers
for (const receiver of this.pc.getReceivers()) {
if (!!receiver.track) {
receiver.track.stop();
}
}
}
this.pc.close();
}
} catch (err) {
console.warn('Exception disposing webrtc peer ' + err);
}
}
/**
* Function that creates an offer, sets it as local description and returns the offer param
* to send to OpenVidu Server (will be the remote description of other peer)
*/
generateOffer(): Promise<string> {
return new Promise((resolve, reject) => {
let offerAudio, offerVideo = true;
// Constraints must have both blocks
if (!!this.configuration.mediaConstraints) {
offerAudio = (typeof this.configuration.mediaConstraints.audio === 'boolean') ?
this.configuration.mediaConstraints.audio : true;
offerVideo = (typeof this.configuration.mediaConstraints.video === 'boolean') ?
this.configuration.mediaConstraints.video : true;
}
const constraints: RTCOfferOptions = {
offerToReceiveAudio: (this.configuration.mode !== 'sendonly' && offerAudio),
offerToReceiveVideo: (this.configuration.mode !== 'sendonly' && offerVideo)
};
console.debug('RTCPeerConnection constraints: ' + JSON.stringify(constraints));
if (platform.name === 'Safari' && platform.ua!!.indexOf('Safari') !== -1) {
// Safari (excluding Ionic), at least on iOS just seems to support unified plan, whereas in other browsers is not yet ready and considered experimental
if (offerAudio) {
this.pc.addTransceiver('audio', {
direction: this.configuration.mode,
});
}
if (offerVideo) {
this.pc.addTransceiver('video', {
direction: this.configuration.mode,
});
}
this.pc
.createOffer()
.then(offer => {
console.debug('Created SDP offer');
return this.pc.setLocalDescription(offer);
})
.then(() => {
const localDescription = this.pc.localDescription;
if (!!localDescription) {
console.debug('Local description set', localDescription.sdp);
resolve(localDescription.sdp);
} else {
reject('Local description is not defined');
}
})
.catch(error => reject(error));
} else {
// Rest of platforms
this.pc.createOffer(constraints).then(offer => {
console.debug('Created SDP offer');
return this.pc.setLocalDescription(offer);
})
.then(() => {
const localDescription = this.pc.localDescription;
if (!!localDescription) {
console.debug('Local description set', localDescription.sdp);
resolve(localDescription.sdp);
} else {
reject('Local description is not defined');
}
})
.catch(error => reject(error));
}
});
}
/**
* Function invoked when a SDP answer is received. Final step in SDP negotiation, the peer
* just needs to set the answer as its remote description
*/
processAnswer(sdpAnswer: string, needsTimeoutOnProcessAswer: boolean): Promise<string> {
return new Promise((resolve, reject) => {
const answer: RTCSessionDescriptionInit = {
type: 'answer',
sdp: sdpAnswer
};
console.debug('SDP answer received, setting remote description');
if (this.pc.signalingState === 'closed') {
reject('RTCPeerConnection is closed');
}
if (needsTimeoutOnProcessAswer && platform['isIonicIos']) {
setTimeout(() => {
console.info('setRemoteDescription run after timout for iOS device');
this.pc.setRemoteDescription(answer).then(() => resolve()).catch(error => reject(error));
}, 250);
} else {
// Rest of platforms
this.pc.setRemoteDescription(answer).then(() => resolve()).catch(error => reject(error));
}
});
}
/**
* Callback function invoked when an ICE candidate is received
*/
addIceCandidate(iceCandidate: RTCIceCandidate): Promise<void> {
return new Promise((resolve, reject) => {
console.debug('Remote ICE candidate received', iceCandidate);
this.remoteCandidatesQueue.push(iceCandidate);
switch (this.pc.signalingState) {
case 'closed':
reject(new Error('PeerConnection object is closed'));
break;
case 'stable':
if (!!this.pc.remoteDescription) {
this.pc.addIceCandidate(iceCandidate).then(() => resolve()).catch(error => reject(error));
} else {
this.iceCandidateList.push(iceCandidate);
resolve();
}
break;
default:
this.iceCandidateList.push(iceCandidate);
resolve();
}
});
}
}
export class WebRtcPeerRecvonly extends WebRtcPeer {
constructor(configuration: WebRtcPeerConfiguration) {
configuration.mode = 'recvonly';
super(configuration);
}
}
export class WebRtcPeerSendonly extends WebRtcPeer {
constructor(configuration: WebRtcPeerConfiguration) {
configuration.mode = 'sendonly';
super(configuration);
}
}
export class WebRtcPeerSendrecv extends WebRtcPeer {
constructor(configuration: WebRtcPeerConfiguration) {
configuration.mode = 'sendrecv';
super(configuration);
}
}

View File

@ -1,412 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
// tslint:disable:no-string-literal
import { Stream } from '../../OpenVidu/Stream';
import platform = require('platform');
export class WebRtcStats {
private webRtcStatsEnabled = false;
private webRtcStatsIntervalId: NodeJS.Timer;
private statsInterval = 1;
private stats: any = {
inbound: {
audio: {
bytesReceived: 0,
packetsReceived: 0,
packetsLost: 0
},
video: {
bytesReceived: 0,
packetsReceived: 0,
packetsLost: 0,
framesDecoded: 0,
nackCount: 0
}
},
outbound: {
audio: {
bytesSent: 0,
packetsSent: 0,
},
video: {
bytesSent: 0,
packetsSent: 0,
framesEncoded: 0,
nackCount: 0
}
}
};
constructor(private stream: Stream) { }
public isEnabled(): boolean {
return this.webRtcStatsEnabled;
}
public initWebRtcStats(): void {
const elastestInstrumentation = localStorage.getItem('elastest-instrumentation');
if (!!elastestInstrumentation) {
// ElasTest instrumentation object found in local storage
console.warn('WebRtc stats enabled for stream ' + this.stream.streamId + ' of connection ' + this.stream.connection.connectionId);
this.webRtcStatsEnabled = true;
const instrumentation = JSON.parse(elastestInstrumentation);
this.statsInterval = instrumentation.webrtc.interval; // Interval in seconds
console.warn('localStorage item: ' + JSON.stringify(instrumentation));
this.webRtcStatsIntervalId = setInterval(() => {
this.sendStatsToHttpEndpoint(instrumentation);
}, this.statsInterval * 1000);
return;
}
console.debug('WebRtc stats not enabled');
}
public stopWebRtcStats() {
if (this.webRtcStatsEnabled) {
clearInterval(this.webRtcStatsIntervalId);
console.warn('WebRtc stats stopped for disposed stream ' + this.stream.streamId + ' of connection ' + this.stream.connection.connectionId);
}
}
public getSelectedIceCandidateInfo(): Promise<any> {
return new Promise((resolve, reject) => {
this.getStatsAgnostic(this.stream.getRTCPeerConnection(),
(stats) => {
if ((platform.name!.indexOf('Chrome') !== -1) || (platform.name!.indexOf('Opera') !== -1)) {
let localCandidateId, remoteCandidateId, googCandidatePair;
const localCandidates = {};
const remoteCandidates = {};
for (const key in stats) {
const stat = stats[key];
if (stat.type === 'localcandidate') {
localCandidates[stat.id] = stat;
} else if (stat.type === 'remotecandidate') {
remoteCandidates[stat.id] = stat;
} else if (stat.type === 'googCandidatePair' && (stat.googActiveConnection === 'true')) {
googCandidatePair = stat;
localCandidateId = stat.localCandidateId;
remoteCandidateId = stat.remoteCandidateId;
}
}
let finalLocalCandidate = localCandidates[localCandidateId];
if (!!finalLocalCandidate) {
const candList = this.stream.getLocalIceCandidateList();
const cand = candList.filter((c: RTCIceCandidate) => {
return (!!c.candidate &&
c.candidate.indexOf(finalLocalCandidate.ipAddress) >= 0 &&
c.candidate.indexOf(finalLocalCandidate.portNumber) >= 0 &&
c.candidate.indexOf(finalLocalCandidate.priority) >= 0);
});
finalLocalCandidate.raw = !!cand[0] ? cand[0].candidate : 'ERROR: Cannot find local candidate in list of sent ICE candidates';
} else {
finalLocalCandidate = 'ERROR: No active local ICE candidate. Probably ICE-TCP is being used';
}
let finalRemoteCandidate = remoteCandidates[remoteCandidateId];
if (!!finalRemoteCandidate) {
const candList = this.stream.getRemoteIceCandidateList();
const cand = candList.filter((c: RTCIceCandidate) => {
return (!!c.candidate &&
c.candidate.indexOf(finalRemoteCandidate.ipAddress) >= 0 &&
c.candidate.indexOf(finalRemoteCandidate.portNumber) >= 0 &&
c.candidate.indexOf(finalRemoteCandidate.priority) >= 0);
});
finalRemoteCandidate.raw = !!cand[0] ? cand[0].candidate : 'ERROR: Cannot find remote candidate in list of received ICE candidates';
} else {
finalRemoteCandidate = 'ERROR: No active remote ICE candidate. Probably ICE-TCP is being used';
}
resolve({
googCandidatePair,
localCandidate: finalLocalCandidate,
remoteCandidate: finalRemoteCandidate
});
} else {
reject('Selected ICE candidate info only available for Chrome');
}
},
(error) => {
reject(error);
});
});
}
private sendStatsToHttpEndpoint(instrumentation): void {
const sendPost = (json) => {
const http: XMLHttpRequest = new XMLHttpRequest();
const url: string = instrumentation.webrtc.httpEndpoint;
http.open('POST', url, true);
http.setRequestHeader('Content-type', 'application/json');
http.onreadystatechange = () => { // Call a function when the state changes.
if (http.readyState === 4 && http.status === 200) {
console.log('WebRtc stats successfully sent to ' + url + ' for stream ' + this.stream.streamId + ' of connection ' + this.stream.connection.connectionId);
}
};
http.send(json);
};
const f = (stats) => {
if (platform.name!.indexOf('Firefox') !== -1) {
stats.forEach((stat) => {
let json = {};
if ((stat.type === 'inbound-rtp') &&
(
// Avoid firefox empty outbound-rtp statistics
stat.nackCount !== null &&
stat.isRemote === false &&
stat.id.startsWith('inbound') &&
stat.remoteId.startsWith('inbound')
)) {
const metricId = 'webrtc_inbound_' + stat.mediaType + '_' + stat.ssrc;
const jit = stat.jitter * 1000;
const metrics = {
bytesReceived: (stat.bytesReceived - this.stats.inbound[stat.mediaType].bytesReceived) / this.statsInterval,
jitter: jit,
packetsReceived: (stat.packetsReceived - this.stats.inbound[stat.mediaType].packetsReceived) / this.statsInterval,
packetsLost: (stat.packetsLost - this.stats.inbound[stat.mediaType].packetsLost) / this.statsInterval
};
const units = {
bytesReceived: 'bytes',
jitter: 'ms',
packetsReceived: 'packets',
packetsLost: 'packets'
};
if (stat.mediaType === 'video') {
metrics['framesDecoded'] = (stat.framesDecoded - this.stats.inbound.video.framesDecoded) / this.statsInterval;
metrics['nackCount'] = (stat.nackCount - this.stats.inbound.video.nackCount) / this.statsInterval;
units['framesDecoded'] = 'frames';
units['nackCount'] = 'packets';
this.stats.inbound.video.framesDecoded = stat.framesDecoded;
this.stats.inbound.video.nackCount = stat.nackCount;
}
this.stats.inbound[stat.mediaType].bytesReceived = stat.bytesReceived;
this.stats.inbound[stat.mediaType].packetsReceived = stat.packetsReceived;
this.stats.inbound[stat.mediaType].packetsLost = stat.packetsLost;
json = {
'@timestamp': new Date(stat.timestamp).toISOString(),
'exec': instrumentation.exec,
'component': instrumentation.component,
'stream': 'webRtc',
'et_type': metricId,
'stream_type': 'composed_metrics',
'units': units
};
json[metricId] = metrics;
sendPost(JSON.stringify(json));
} else if ((stat.type === 'outbound-rtp') &&
(
// Avoid firefox empty inbound-rtp statistics
stat.isRemote === false &&
stat.id.toLowerCase().includes('outbound')
)) {
const metricId = 'webrtc_outbound_' + stat.mediaType + '_' + stat.ssrc;
const metrics = {
bytesSent: (stat.bytesSent - this.stats.outbound[stat.mediaType].bytesSent) / this.statsInterval,
packetsSent: (stat.packetsSent - this.stats.outbound[stat.mediaType].packetsSent) / this.statsInterval
};
const units = {
bytesSent: 'bytes',
packetsSent: 'packets'
};
if (stat.mediaType === 'video') {
metrics['framesEncoded'] = (stat.framesEncoded - this.stats.outbound.video.framesEncoded) / this.statsInterval;
units['framesEncoded'] = 'frames';
this.stats.outbound.video.framesEncoded = stat.framesEncoded;
}
this.stats.outbound[stat.mediaType].bytesSent = stat.bytesSent;
this.stats.outbound[stat.mediaType].packetsSent = stat.packetsSent;
json = {
'@timestamp': new Date(stat.timestamp).toISOString(),
'exec': instrumentation.exec,
'component': instrumentation.component,
'stream': 'webRtc',
'et_type': metricId,
'stream_type': 'composed_metrics',
'units': units
};
json[metricId] = metrics;
sendPost(JSON.stringify(json));
}
});
} else if ((platform.name!.indexOf('Chrome') !== -1) || (platform.name!.indexOf('Opera') !== -1)) {
for (const key of Object.keys(stats)) {
const stat = stats[key];
if (stat.type === 'ssrc') {
let json = {};
if ('bytesReceived' in stat && (
(stat.mediaType === 'audio' && 'audioOutputLevel' in stat) ||
(stat.mediaType === 'video' && 'qpSum' in stat)
)) {
// inbound-rtp
const metricId = 'webrtc_inbound_' + stat.mediaType + '_' + stat.ssrc;
const metrics = {
bytesReceived: (stat.bytesReceived - this.stats.inbound[stat.mediaType].bytesReceived) / this.statsInterval,
jitter: stat.googJitterBufferMs,
packetsReceived: (stat.packetsReceived - this.stats.inbound[stat.mediaType].packetsReceived) / this.statsInterval,
packetsLost: (stat.packetsLost - this.stats.inbound[stat.mediaType].packetsLost) / this.statsInterval
};
const units = {
bytesReceived: 'bytes',
jitter: 'ms',
packetsReceived: 'packets',
packetsLost: 'packets'
};
if (stat.mediaType === 'video') {
metrics['framesDecoded'] = (stat.framesDecoded - this.stats.inbound.video.framesDecoded) / this.statsInterval;
metrics['nackCount'] = (stat.googNacksSent - this.stats.inbound.video.nackCount) / this.statsInterval;
units['framesDecoded'] = 'frames';
units['nackCount'] = 'packets';
this.stats.inbound.video.framesDecoded = stat.framesDecoded;
this.stats.inbound.video.nackCount = stat.googNacksSent;
}
this.stats.inbound[stat.mediaType].bytesReceived = stat.bytesReceived;
this.stats.inbound[stat.mediaType].packetsReceived = stat.packetsReceived;
this.stats.inbound[stat.mediaType].packetsLost = stat.packetsLost;
json = {
'@timestamp': new Date(stat.timestamp).toISOString(),
'exec': instrumentation.exec,
'component': instrumentation.component,
'stream': 'webRtc',
'et_type': metricId,
'stream_type': 'composed_metrics',
'units': units
};
json[metricId] = metrics;
sendPost(JSON.stringify(json));
} else if ('bytesSent' in stat) {
// outbound-rtp
const metricId = 'webrtc_outbound_' + stat.mediaType + '_' + stat.ssrc;
const metrics = {
bytesSent: (stat.bytesSent - this.stats.outbound[stat.mediaType].bytesSent) / this.statsInterval,
packetsSent: (stat.packetsSent - this.stats.outbound[stat.mediaType].packetsSent) / this.statsInterval
};
const units = {
bytesSent: 'bytes',
packetsSent: 'packets'
};
if (stat.mediaType === 'video') {
metrics['framesEncoded'] = (stat.framesEncoded - this.stats.outbound.video.framesEncoded) / this.statsInterval;
units['framesEncoded'] = 'frames';
this.stats.outbound.video.framesEncoded = stat.framesEncoded;
}
this.stats.outbound[stat.mediaType].bytesSent = stat.bytesSent;
this.stats.outbound[stat.mediaType].packetsSent = stat.packetsSent;
json = {
'@timestamp': new Date(stat.timestamp).toISOString(),
'exec': instrumentation.exec,
'component': instrumentation.component,
'stream': 'webRtc',
'et_type': metricId,
'stream_type': 'composed_metrics',
'units': units
};
json[metricId] = metrics;
sendPost(JSON.stringify(json));
}
}
}
}
};
this.getStatsAgnostic(this.stream.getRTCPeerConnection(), f, (error) => { console.log(error); });
}
private standardizeReport(response) {
console.log(response);
const standardReport = {};
if (platform.name!.indexOf('Firefox') !== -1) {
Object.keys(response).forEach(key => {
console.log(response[key]);
});
return response;
}
response.result().forEach(report => {
const standardStats = {
id: report.id,
timestamp: report.timestamp,
type: report.type
};
report.names().forEach((name) => {
standardStats[name] = report.stat(name);
});
standardReport[standardStats.id] = standardStats;
});
return standardReport;
}
private getStatsAgnostic(pc, successCb, failureCb) {
if (platform.name!.indexOf('Firefox') !== -1) {
// getStats takes args in different order in Chrome and Firefox
return pc.getStats(null).then(response => {
const report = this.standardizeReport(response);
successCb(report);
}).catch(failureCb);
} else if ((platform.name!.indexOf('Chrome') !== -1) || (platform.name!.indexOf('Opera') !== -1)) {
// In Chrome, the first two arguments are reversed
return pc.getStats((response) => {
const report = this.standardizeReport(response);
successCb(report);
}, null, failureCb);
}
}
}

View File

@ -1,34 +0,0 @@
export { OpenVidu } from './OpenVidu/OpenVidu';
export { Session } from './OpenVidu/Session';
export { Publisher } from './OpenVidu/Publisher';
export { Subscriber } from './OpenVidu/Subscriber';
export { StreamManager } from './OpenVidu/StreamManager';
export { Stream } from './OpenVidu/Stream';
export { Connection } from './OpenVidu/Connection';
export { LocalRecorder } from './OpenVidu/LocalRecorder';
export { Filter } from './OpenVidu/Filter';
export { LocalRecorderState } from './OpenViduInternal/Enums/LocalRecorderState';
export { OpenViduError } from './OpenViduInternal/Enums/OpenViduError';
export { VideoInsertMode } from './OpenViduInternal/Enums/VideoInsertMode';
export { Event } from './OpenViduInternal/Events/Event';
export { ConnectionEvent } from './OpenViduInternal/Events/ConnectionEvent';
export { PublisherSpeakingEvent } from './OpenViduInternal/Events/PublisherSpeakingEvent';
export { RecordingEvent } from './OpenViduInternal/Events/RecordingEvent';
export { SessionDisconnectedEvent } from './OpenViduInternal/Events/SessionDisconnectedEvent';
export { SignalEvent } from './OpenViduInternal/Events/SignalEvent';
export { StreamEvent } from './OpenViduInternal/Events/StreamEvent';
export { StreamManagerEvent } from './OpenViduInternal/Events/StreamManagerEvent';
export { VideoElementEvent } from './OpenViduInternal/Events/VideoElementEvent';
export { StreamPropertyChangedEvent } from './OpenViduInternal/Events/StreamPropertyChangedEvent';
export { FilterEvent } from './OpenViduInternal/Events/FilterEvent';
export { Capabilities } from './OpenViduInternal/Interfaces/Public/Capabilities';
export { Device } from './OpenViduInternal/Interfaces/Public/Device';
export { EventDispatcher } from './OpenViduInternal/Interfaces/Public/EventDispatcher';
export { OpenViduAdvancedConfiguration } from './OpenViduInternal/Interfaces/Public/OpenViduAdvancedConfiguration';
export { PublisherProperties } from './OpenViduInternal/Interfaces/Public/PublisherProperties';
export { SignalOptions } from './OpenViduInternal/Interfaces/Public/SignalOptions';
export { StreamManagerVideo } from './OpenViduInternal/Interfaces/Public/StreamManagerVideo';
export { SubscriberProperties } from './OpenViduInternal/Interfaces/Public/SubscriberProperties';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,36 +0,0 @@
{
//"allowUnusedLabels": true,
"allowUnreachableCode": false,
"buildOnSave": false,
"compileOnSave": true,
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"emitBOM": false,
"forceConsistentCasingInFileNames": true,
"lib": [
"dom",
"es2015.promise",
"es5",
"scripthost"
],
"module": "commonjs",
"noFallthroughCasesInSwitch": true,
//"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
//"noUnusedLocals": true,
//"noUnusedParameters": true,
"outDir": "../../lib",
"preserveConstEnums": true,
"removeComments": true,
"rootDir": "./src",
"skipDefaultLibCheck": true,
"skipLibCheck": true,
"sourceMap": true,
"strictNullChecks": true,
"suppressExcessPropertyErrors": true,
"suppressImplicitAnyIndexErrors": true,
"target": "es5"
}
}

View File

@ -1 +0,0 @@
/target/

View File

@ -1,13 +0,0 @@
[![License badge](https://img.shields.io/badge/license-Apache2-orange.svg)](http://www.apache.org/licenses/LICENSE-2.0)
[![Documentation badge](https://readthedocs.org/projects/fiware-orion/badge/?version=latest)](https://openvidu.io/docs/home/)
[![Docker badge](https://img.shields.io/docker/pulls/fiware/orion.svg)](https://hub.docker.com/r/openvidu/)
[![Support badge](https://img.shields.io/badge/support-sof-yellowgreen.svg)](https://groups.google.com/forum/#!forum/openvidu)
[![][OpenViduLogo]](https://openvidu.io)
openvidu-client
===
Internal Java client used by [openvidu-server](https://github.com/OpenVidu/openvidu/tree/master/openvidu-server). Can be used to implement an Android client.
[OpenViduLogo]: https://secure.gravatar.com/avatar/5daba1d43042f2e4e85849733c8e5702?s=120

View File

@ -1,105 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.openvidu</groupId>
<artifactId>openvidu-parent</artifactId>
<version>1.9.0-beta-1</version>
</parent>
<artifactId>openvidu-client</artifactId>
<version>1.1.0</version>
<packaging>jar</packaging>
<name>OpenVidu Client</name>
<description>
OpenVidu client library for the client-side of OpenVidu Server
</description>
<url>https://github.com/OpenVidu/openvidu</url>
<licenses>
<license>
<name>Apache 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<organization>
<name>OpenVidu</name>
<url>https://github.com/OpenVidu/openvidu</url>
</organization>
<scm>
<url>${openvidu.scm.url}</url>
<connection>scm:git:${openvidu.scm.connection}</connection>
<developerConnection>scm:git:${openvidu.scm.connection}</developerConnection>
<tag>develop</tag>
</scm>
<developers>
<developer>
<id>openvidu.io</id>
<name>-openvidu.io Community</name>
<organization>OpenVidu</organization>
<organizationUrl>https://openvidu.io</organizationUrl>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>org.kurento</groupId>
<artifactId>kurento-jsonrpc-client</artifactId>
<version>${version.kurento}</version>
</dependency>
<dependency>
<groupId>org.kurento</groupId>
<artifactId>kurento-jsonrpc-client-jetty</artifactId>
<version>${version.kurento}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${version.junit}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${version.mockito}</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>default</id>
<activation>
<property>
<name>default</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -1,217 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client;
import static io.openvidu.client.internal.ProtocolElements.CUSTOMREQUEST_METHOD;
import static io.openvidu.client.internal.ProtocolElements.JOINROOM_METHOD;
import static io.openvidu.client.internal.ProtocolElements.JOINROOM_PEERID_PARAM;
import static io.openvidu.client.internal.ProtocolElements.JOINROOM_PEERSTREAMID_PARAM;
import static io.openvidu.client.internal.ProtocolElements.JOINROOM_PEERSTREAMS_PARAM;
import static io.openvidu.client.internal.ProtocolElements.JOINROOM_ROOM_PARAM;
import static io.openvidu.client.internal.ProtocolElements.JOINROOM_USER_PARAM;
import static io.openvidu.client.internal.ProtocolElements.LEAVEROOM_METHOD;
import static io.openvidu.client.internal.ProtocolElements.ONICECANDIDATE_CANDIDATE_PARAM;
import static io.openvidu.client.internal.ProtocolElements.ONICECANDIDATE_EPNAME_PARAM;
import static io.openvidu.client.internal.ProtocolElements.ONICECANDIDATE_METHOD;
import static io.openvidu.client.internal.ProtocolElements.ONICECANDIDATE_SDPMIDPARAM;
import static io.openvidu.client.internal.ProtocolElements.ONICECANDIDATE_SDPMLINEINDEX_PARAM;
import static io.openvidu.client.internal.ProtocolElements.PUBLISHVIDEO_DOLOOPBACK_PARAM;
import static io.openvidu.client.internal.ProtocolElements.PUBLISHVIDEO_METHOD;
import static io.openvidu.client.internal.ProtocolElements.PUBLISHVIDEO_SDPANSWER_PARAM;
import static io.openvidu.client.internal.ProtocolElements.PUBLISHVIDEO_SDPOFFER_PARAM;
import static io.openvidu.client.internal.ProtocolElements.RECEIVEVIDEO_METHOD;
import static io.openvidu.client.internal.ProtocolElements.RECEIVEVIDEO_SDPANSWER_PARAM;
import static io.openvidu.client.internal.ProtocolElements.RECEIVEVIDEO_SDPOFFER_PARAM;
import static io.openvidu.client.internal.ProtocolElements.RECEIVEVIDEO_SENDER_PARAM;
import static io.openvidu.client.internal.ProtocolElements.SENDMESSAGE_MESSAGE_PARAM;
import static io.openvidu.client.internal.ProtocolElements.SENDMESSAGE_ROOM_METHOD;
import static io.openvidu.client.internal.ProtocolElements.UNPUBLISHVIDEO_METHOD;
import static io.openvidu.client.internal.ProtocolElements.UNSUBSCRIBEFROMVIDEO_METHOD;
import static io.openvidu.client.internal.ProtocolElements.UNSUBSCRIBEFROMVIDEO_SENDER_PARAM;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.kurento.jsonrpc.client.JsonRpcClient;
import org.kurento.jsonrpc.client.JsonRpcClientWebSocket;
import org.kurento.jsonrpc.client.JsonRpcWSConnectionListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import io.openvidu.client.internal.JsonRoomUtils;
import io.openvidu.client.internal.Notification;
/**
* Java client for the room server.
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class OpenViduClient {
private static final Logger log = LoggerFactory.getLogger(OpenViduClient.class);
private JsonRpcClient client;
private ServerJsonRpcHandler handler;
public OpenViduClient(String wsUri) {
this(new JsonRpcClientWebSocket(wsUri, new JsonRpcWSConnectionListener() {
@Override
public void reconnected(boolean sameServer) {
}
@Override
public void disconnected() {
log.warn("JsonRpcWebsocket connection: Disconnected");
}
@Override
public void connectionFailed() {
log.warn("JsonRpcWebsocket connection: Connection failed");
}
@Override
public void connected() {
}
@Override
public void reconnecting() {
log.warn("JsonRpcWebsocket connection: is reconnecting");
}
}, new SslContextFactory(true)));
}
public OpenViduClient(JsonRpcClient client) {
this.client = client;
this.handler = new ServerJsonRpcHandler();
this.client.setServerRequestHandler(this.handler);
}
public OpenViduClient(JsonRpcClient client, ServerJsonRpcHandler handler) {
this.client = client;
this.handler = handler;
this.client.setServerRequestHandler(this.handler);
}
public void close() throws IOException {
this.client.close();
}
public Map<String, List<String>> joinRoom(String roomName, String userName)
throws IOException {
JsonObject params = new JsonObject();
params.addProperty(JOINROOM_ROOM_PARAM, roomName);
params.addProperty(JOINROOM_USER_PARAM, userName);
JsonElement result = client.sendRequest(JOINROOM_METHOD, params);
Map<String, List<String>> peers = new HashMap<String, List<String>>();
JsonArray jsonPeers = JsonRoomUtils.getResponseProperty(result, "value", JsonArray.class);
if (jsonPeers.size() > 0) {
Iterator<JsonElement> peerIt = jsonPeers.iterator();
while (peerIt.hasNext()) {
JsonElement peer = peerIt.next();
String peerId = JsonRoomUtils.getResponseProperty(peer, JOINROOM_PEERID_PARAM,
String.class);
List<String> streams = new ArrayList<String>();
JsonArray jsonStreams = JsonRoomUtils.getResponseProperty(peer, JOINROOM_PEERSTREAMS_PARAM,
JsonArray.class, true);
if (jsonStreams != null) {
Iterator<JsonElement> streamIt = jsonStreams.iterator();
while (streamIt.hasNext()) {
streams.add(JsonRoomUtils.getResponseProperty(streamIt.next(),
JOINROOM_PEERSTREAMID_PARAM, String.class));
}
}
peers.put(peerId, streams);
}
}
return peers;
}
public void leaveRoom() throws IOException {
client.sendRequest(LEAVEROOM_METHOD, new JsonObject());
}
public String publishVideo(String sdpOffer, boolean doLoopback) throws IOException {
JsonObject params = new JsonObject();
params.addProperty(PUBLISHVIDEO_SDPOFFER_PARAM, sdpOffer);
params.addProperty(PUBLISHVIDEO_DOLOOPBACK_PARAM, doLoopback);
JsonElement result = client.sendRequest(PUBLISHVIDEO_METHOD, params);
return JsonRoomUtils.getResponseProperty(result, PUBLISHVIDEO_SDPANSWER_PARAM, String.class);
}
public void unpublishVideo() throws IOException {
client.sendRequest(UNPUBLISHVIDEO_METHOD, new JsonObject());
}
// sender should look like 'username_streamId'
public String receiveVideoFrom(String sender, String sdpOffer) throws IOException {
JsonObject params = new JsonObject();
params.addProperty(RECEIVEVIDEO_SENDER_PARAM, sender);
params.addProperty(RECEIVEVIDEO_SDPOFFER_PARAM, sdpOffer);
JsonElement result = client.sendRequest(RECEIVEVIDEO_METHOD, params);
return JsonRoomUtils.getResponseProperty(result, RECEIVEVIDEO_SDPANSWER_PARAM, String.class);
}
// sender should look like 'username_streamId'
public void unsubscribeFromVideo(String sender) throws IOException {
JsonObject params = new JsonObject();
params.addProperty(UNSUBSCRIBEFROMVIDEO_SENDER_PARAM, sender);
client.sendRequest(UNSUBSCRIBEFROMVIDEO_METHOD, params);
}
public void onIceCandidate(String endpointName, String candidate, String sdpMid,
int sdpMLineIndex) throws IOException {
JsonObject params = new JsonObject();
params.addProperty(ONICECANDIDATE_EPNAME_PARAM, endpointName);
params.addProperty(ONICECANDIDATE_CANDIDATE_PARAM, candidate);
params.addProperty(ONICECANDIDATE_SDPMIDPARAM, sdpMid);
params.addProperty(ONICECANDIDATE_SDPMLINEINDEX_PARAM, sdpMLineIndex);
client.sendRequest(ONICECANDIDATE_METHOD, params);
}
public void sendMessage(String userName, String roomName, String message) throws IOException {
JsonObject params = new JsonObject();
params.addProperty(SENDMESSAGE_MESSAGE_PARAM, message);
client.sendRequest(SENDMESSAGE_ROOM_METHOD, params);
}
public JsonElement customRequest(JsonObject customReqParams) throws IOException {
return client.sendRequest(CUSTOMREQUEST_METHOD, customReqParams);
}
/**
* Polls the notifications list maintained by this client to obtain new events sent by server.
* This method blocks until there is a notification to return. This is a one-time operation for
* the returned element.
*
* @return a server notification object, null when interrupted while waiting
*/
public Notification getServerNotification() {
return this.handler.getNotification();
}
}

View File

@ -1,82 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package io.openvidu.client;
import org.kurento.jsonrpc.JsonRpcErrorException;
public class OpenViduException extends JsonRpcErrorException {
private static final long serialVersionUID = 1L;
public static enum Code {
GENERIC_ERROR_CODE(999),
TRANSPORT_ERROR_CODE(803), TRANSPORT_RESPONSE_ERROR_CODE(802), TRANSPORT_REQUEST_ERROR_CODE(801),
MEDIA_TYPE_STREAM_INCOMPATIBLE_WITH_RECORDING_PROPERTIES_ERROR_CODE(309),
MEDIA_TYPE_RECORDING_PROPERTIES_ERROR_CODE(308), MEDIA_MUTE_ERROR_CODE(307),
MEDIA_NOT_A_WEB_ENDPOINT_ERROR_CODE(306), MEDIA_RTP_ENDPOINT_ERROR_CODE(305),
MEDIA_WEBRTC_ENDPOINT_ERROR_CODE(304), MEDIA_ENDPOINT_ERROR_CODE(303), MEDIA_SDP_ERROR_CODE(302),
MEDIA_GENERIC_ERROR_CODE(301),
ROOM_CANNOT_BE_CREATED_ERROR_CODE(204), ROOM_CLOSED_ERROR_CODE(203), ROOM_NOT_FOUND_ERROR_CODE(202),
ROOM_GENERIC_ERROR_CODE(201),
USER_NOT_STREAMING_ERROR_CODE(105), EXISTING_USER_IN_ROOM_ERROR_CODE(104), USER_CLOSED_ERROR_CODE(103),
USER_NOT_FOUND_ERROR_CODE(102), USER_GENERIC_ERROR_CODE(10),
USER_UNAUTHORIZED_ERROR_CODE(401), ROLE_NOT_FOUND_ERROR_CODE(402), SESSIONID_CANNOT_BE_CREATED_ERROR_CODE(403),
TOKEN_CANNOT_BE_CREATED_ERROR_CODE(404), EXISTING_FILTER_ALREADY_APPLIED_ERROR_CODE(405),
FILTER_NOT_APPLIED_ERROR_CODE(406), FILTER_EVENT_LISTENER_NOT_FOUND(407),
USER_METADATA_FORMAT_INVALID_ERROR_CODE(500),
SIGNAL_FORMAT_INVALID_ERROR_CODE(600), SIGNAL_TO_INVALID_ERROR_CODE(601),
SIGNAL_MESSAGE_INVALID_ERROR_CODE(602),
DOCKER_NOT_FOUND(709), RECORDING_PATH_NOT_VALID(708), RECORDING_FILE_EMPTY_ERROR(707),
RECORDING_DELETE_ERROR_CODE(706), RECORDING_LIST_ERROR_CODE(705), RECORDING_STOP_ERROR_CODE(704),
RECORDING_START_ERROR_CODE(703), RECORDING_REPORT_ERROR_CODE(702), RECORDING_COMPLETION_ERROR_CODE(701);
private int value;
private Code(int value) {
this.value = value;
}
public int getValue() {
return this.value;
}
}
private Code code = Code.GENERIC_ERROR_CODE;
public OpenViduException(Code code, String message) {
super(code.getValue(), message);
this.code = code;
}
public int getCodeValue() {
return code.getValue();
}
@Override
public String toString() {
return super.toString();
}
}

View File

@ -1,222 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import org.kurento.jsonrpc.DefaultJsonRpcHandler;
import org.kurento.jsonrpc.Transaction;
import org.kurento.jsonrpc.message.Request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import io.openvidu.client.internal.IceCandidate;
import io.openvidu.client.internal.IceCandidateInfo;
import io.openvidu.client.internal.JsonRoomUtils;
import io.openvidu.client.internal.MediaErrorInfo;
import io.openvidu.client.internal.Notification;
import io.openvidu.client.internal.ParticipantEvictedInfo;
import io.openvidu.client.internal.ParticipantJoinedInfo;
import io.openvidu.client.internal.ParticipantLeftInfo;
import io.openvidu.client.internal.ParticipantPublishedInfo;
import io.openvidu.client.internal.ParticipantUnpublishedInfo;
import io.openvidu.client.internal.ProtocolElements;
import io.openvidu.client.internal.RoomClosedInfo;
import io.openvidu.client.internal.SendMessageInfo;
/**
* Service that handles server JSON-RPC events.
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ServerJsonRpcHandler extends DefaultJsonRpcHandler<JsonObject> {
private static final Logger log = LoggerFactory.getLogger(ServerJsonRpcHandler.class);
private BlockingQueue<Notification> notifications = new ArrayBlockingQueue<Notification>(100);
@Override
public void handleRequest(Transaction transaction, Request<JsonObject> request) throws Exception {
Notification notif = null;
try {
switch (request.getMethod()) {
case ProtocolElements.ICECANDIDATE_METHOD:
notif = iceCandidate(transaction, request);
break;
case ProtocolElements.MEDIAERROR_METHOD:
notif = mediaError(transaction, request);
break;
case ProtocolElements.PARTICIPANTJOINED_METHOD:
notif = participantJoined(transaction, request);
break;
case ProtocolElements.PARTICIPANTLEFT_METHOD:
notif = participantLeft(transaction, request);
break;
case ProtocolElements.PARTICIPANTEVICTED_METHOD:
notif = participantEvicted(transaction, request);
break;
case ProtocolElements.PARTICIPANTPUBLISHED_METHOD:
notif = participantPublished(transaction, request);
break;
case ProtocolElements.PARTICIPANTUNPUBLISHED_METHOD:
notif = participantUnpublished(transaction, request);
break;
case ProtocolElements.ROOMCLOSED_METHOD:
notif = roomClosed(transaction, request);
break;
case ProtocolElements.PARTICIPANTSENDMESSAGE_METHOD:
notif = participantSendMessage(transaction, request);
break;
default:
throw new Exception("Unrecognized request " + request.getMethod());
}
} catch (Exception e) {
log.error("Exception processing request {}", request, e);
transaction.sendError(e);
return;
}
if (notif != null) {
try {
notifications.put(notif);
log.debug("Enqueued notification {}", notif);
} catch (InterruptedException e) {
log.warn("Interrupted when enqueuing notification {}", notif, e);
}
}
}
private Notification participantSendMessage(Transaction transaction,
Request<JsonObject> request) {
String data = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTSENDMESSAGE_DATA_PARAM, String.class);
String from = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTSENDMESSAGE_FROM_PARAM, String.class);
String type = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTSENDMESSAGE_TYPE_PARAM, String.class);
SendMessageInfo eventInfo = new SendMessageInfo(data, from, type);
log.debug("Recvd send message event {}", eventInfo);
return eventInfo;
}
private Notification roomClosed(Transaction transaction, Request<JsonObject> request) {
String room = JsonRoomUtils.getRequestParam(request, ProtocolElements.ROOMCLOSED_ROOM_PARAM,
String.class);
RoomClosedInfo eventInfo = new RoomClosedInfo(room);
log.debug("Recvd room closed event {}", eventInfo);
return eventInfo;
}
private Notification participantUnpublished(Transaction transaction,
Request<JsonObject> request) {
String name = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTUNPUBLISHED_NAME_PARAM, String.class);
ParticipantUnpublishedInfo eventInfo = new ParticipantUnpublishedInfo(name);
log.debug("Recvd participant unpublished event {}", eventInfo);
return eventInfo;
}
private Notification participantPublished(Transaction transaction, Request<JsonObject> request) {
String id = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTPUBLISHED_USER_PARAM, String.class);
JsonArray jsonStreams = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTPUBLISHED_STREAMS_PARAM, JsonArray.class);
Iterator<JsonElement> streamIt = jsonStreams.iterator();
List<String> streams = new ArrayList<String>();
while (streamIt.hasNext()) {
streams.add(JsonRoomUtils.getResponseProperty(streamIt.next(),
ProtocolElements.PARTICIPANTPUBLISHED_STREAMID_PARAM, String.class));
}
ParticipantPublishedInfo eventInfo = new ParticipantPublishedInfo(id, streams);
log.debug("Recvd published event {}", eventInfo);
return eventInfo;
}
private Notification participantEvicted(Transaction transaction, Request<JsonObject> request) {
ParticipantEvictedInfo eventInfo = new ParticipantEvictedInfo();
log.debug("Recvd participant evicted event {}", eventInfo);
return eventInfo;
}
private Notification participantLeft(Transaction transaction, Request<JsonObject> request) {
String name = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTLEFT_NAME_PARAM, String.class);
ParticipantLeftInfo eventInfo = new ParticipantLeftInfo(name);
log.debug("Recvd participant left event {}", eventInfo);
return eventInfo;
}
private Notification participantJoined(Transaction transaction, Request<JsonObject> request) {
String id = JsonRoomUtils.getRequestParam(request,
ProtocolElements.PARTICIPANTJOINED_USER_PARAM, String.class);
ParticipantJoinedInfo eventInfo = new ParticipantJoinedInfo(id);
log.debug("Recvd participant joined event {}", eventInfo);
return eventInfo;
}
private Notification mediaError(Transaction transaction, Request<JsonObject> request) {
String description = JsonRoomUtils.getRequestParam(request,
ProtocolElements.MEDIAERROR_ERROR_PARAM, String.class);
MediaErrorInfo eventInfo = new MediaErrorInfo(description);
log.debug("Recvd media error event {}", eventInfo);
return eventInfo;
}
private Notification iceCandidate(Transaction transaction, Request<JsonObject> request) {
String candidate = JsonRoomUtils.getRequestParam(request,
ProtocolElements.ICECANDIDATE_CANDIDATE_PARAM, String.class);
String sdpMid = JsonRoomUtils.getRequestParam(request,
ProtocolElements.ICECANDIDATE_SDPMID_PARAM, String.class);
int sdpMLineIndex = JsonRoomUtils.getRequestParam(request,
ProtocolElements.ICECANDIDATE_SDPMLINEINDEX_PARAM, Integer.class);
IceCandidate iceCandidate = new IceCandidate(candidate, sdpMid, sdpMLineIndex);
String endpoint = JsonRoomUtils.getRequestParam(request,
ProtocolElements.ICECANDIDATE_EPNAME_PARAM, String.class);
IceCandidateInfo eventInfo = new IceCandidateInfo(iceCandidate, endpoint);
log.debug("Recvd ICE candidate event {}", eventInfo);
return eventInfo;
}
/**
* Blocks until an element is available and then returns it by removing it from the queue.
*
* @return a {@link Notification} from the queue, null when interrupted
* @see BlockingQueue#take()
*/
public Notification getNotification() {
try {
Notification notif = notifications.take();
log.debug("Dequeued notification {}", notif);
return notif;
} catch (InterruptedException e) {
log.info("Interrupted while polling notifications' queue");
return null;
}
}
}

View File

@ -1,33 +0,0 @@
package io.openvidu.client.internal;
public class IceCandidate {
private String candidate;
private String sdpMid;
private int sdpMLineIndex;
public IceCandidate(String candidate, String sdpMid, int sdpMLineIndex) {
super();
this.candidate = candidate;
this.sdpMid = sdpMid;
this.sdpMLineIndex = sdpMLineIndex;
}
public String getCandidate() {
return candidate;
}
public String getSdpMid() {
return sdpMid;
}
public int getSdpMLineIndex() {
return sdpMLineIndex;
}
@Override
public String toString() {
return "IceCandidate [candidate=" + candidate + ", sdpMid=" + sdpMid + ", sdpMLineIndex="
+ sdpMLineIndex + "]";
}
}

View File

@ -1,70 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class IceCandidateInfo extends Notification {
private IceCandidate iceCandidate;
private String endpointName;
public IceCandidateInfo(IceCandidate iceCandidate, String endpointName) {
super(ProtocolElements.ICECANDIDATE_METHOD);
this.iceCandidate = iceCandidate;
this.endpointName = endpointName;
}
public IceCandidate getIceCandidate() {
return iceCandidate;
}
public void setIceCandidate(IceCandidate iceCandidate) {
this.iceCandidate = iceCandidate;
}
public String getEndpointName() {
return endpointName;
}
public void setEndpointName(String endpointName) {
this.endpointName = endpointName;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (endpointName != null) {
builder.append("endpointName=").append(endpointName).append(", ");
}
if (iceCandidate != null) {
builder.append("iceCandidate=[sdpMLineIndex= ").append(iceCandidate.getSdpMLineIndex())
.append(", sdpMid=").append(iceCandidate.getSdpMid()).append(", candidate=")
.append(iceCandidate.getCandidate()).append("]");
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,107 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
import org.kurento.jsonrpc.message.Request;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import io.openvidu.client.OpenViduException;
import io.openvidu.client.OpenViduException.Code;
/**
* JSON tools for extracting info from request or response elements.
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class JsonRoomUtils {
public static <T> T getRequestParam(Request<JsonObject> request, String paramName, Class<T> type) {
return getRequestParam(request, paramName, type, false);
}
public static <T> T getRequestParam(Request<JsonObject> request, String paramName, Class<T> type,
boolean allowNull) {
JsonObject params = request.getParams();
if (params == null) {
if (!allowNull) {
throw new OpenViduException(Code.TRANSPORT_REQUEST_ERROR_CODE,
"Invalid request lacking parameter '" + paramName + "'");
} else {
return null;
}
}
return getConverted(params.get(paramName), paramName, type, allowNull);
}
public static <T> T getResponseProperty(JsonElement result, String property, Class<T> type) {
return getResponseProperty(result, property, type, false);
}
public static <T> T getResponseProperty(JsonElement result, String property, Class<T> type,
boolean allowNull) {
if (!(result instanceof JsonObject)) {
throw new OpenViduException(Code.TRANSPORT_RESPONSE_ERROR_CODE,
"Invalid response format. The response '" + result + "' should be a Json object");
}
return getConverted(result.getAsJsonObject().get(property), property, type, allowNull);
}
public static JsonArray getResponseArray(JsonElement result) {
if (!result.isJsonArray()) {
throw new OpenViduException(Code.TRANSPORT_RESPONSE_ERROR_CODE,
"Invalid response format. The response '" + result + "' should be a Json array");
}
return result.getAsJsonArray();
}
@SuppressWarnings("unchecked")
private static <T> T getConverted(JsonElement paramValue, String property, Class<T> type,
boolean allowNull) {
if (paramValue == null) {
if (allowNull) {
return null;
} else {
throw new OpenViduException(Code.TRANSPORT_ERROR_CODE, "Invalid method lacking parameter '"
+ property + "'");
}
}
if (type == String.class) {
if (paramValue.isJsonPrimitive()) {
return (T) paramValue.getAsString();
}
}
if (type == Integer.class) {
if (paramValue.isJsonPrimitive()) {
return (T) Integer.valueOf(paramValue.getAsInt());
}
}
if (type == JsonArray.class) {
if (paramValue.isJsonArray()) {
return (T) paramValue.getAsJsonArray();
}
}
throw new OpenViduException(Code.TRANSPORT_ERROR_CODE, "Param '" + property + "' with value '"
+ paramValue + "' is not a " + type.getName());
}
}

View File

@ -1,55 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*
* @see Notification
*/
public class MediaErrorInfo extends Notification {
private String description;
public MediaErrorInfo(String description) {
super(ProtocolElements.MEDIAERROR_METHOD);
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (description != null) {
builder.append("description=").append(description);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,90 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* Wrapper for server events.
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public abstract class Notification {
public enum Method {
ICECANDIDATE_METHOD(ProtocolElements.ICECANDIDATE_METHOD), MEDIAERROR_METHOD(
ProtocolElements.MEDIAERROR_METHOD), PARTICIPANTJOINED_METHOD(
ProtocolElements.PARTICIPANTJOINED_METHOD), PARTICIPANTLEFT_METHOD(
ProtocolElements.PARTICIPANTLEFT_METHOD), PARTICIPANTEVICTED_METHOD(
ProtocolElements.PARTICIPANTEVICTED_METHOD), PARTICIPANTPUBLISHED_METHOD(
ProtocolElements.PARTICIPANTPUBLISHED_METHOD), PARTICIPANTUNPUBLISHED_METHOD(
ProtocolElements.PARTICIPANTUNPUBLISHED_METHOD), ROOMCLOSED_METHOD(
ProtocolElements.ROOMCLOSED_METHOD), PARTICIPANTSENDMESSAGE_METHOD(
ProtocolElements.PARTICIPANTSENDMESSAGE_METHOD);
private String methodValue;
private Method(String val) {
this.methodValue = val;
}
public String getMethodValue() {
return methodValue;
}
public static Method getFromValue(String val) {
for (Method m : Method.values()) {
if (m.methodValue.equals(val)) {
return m;
}
}
return null;
}
@Override
public String toString() {
return getMethodValue().toString();
}
}
private Method method;
public Notification(Method method) {
this.setMethod(method);
}
public Notification(String methodValue) {
this(Method.getFromValue(methodValue));
}
public Method getMethod() {
return method;
}
public void setMethod(Method method) {
this.method = method;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (method != null) {
builder.append("method=").append(method);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,30 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ParticipantEvictedInfo extends Notification {
public ParticipantEvictedInfo() {
super(ProtocolElements.PARTICIPANTEVICTED_METHOD);
}
}

View File

@ -1,54 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ParticipantJoinedInfo extends Notification {
private String id;
public ParticipantJoinedInfo(String id) {
super(ProtocolElements.PARTICIPANTJOINED_METHOD);
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (id != null) {
builder.append("id=").append(id);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,54 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ParticipantLeftInfo extends Notification {
private String name;
public ParticipantLeftInfo(String name) {
super(ProtocolElements.PARTICIPANTLEFT_METHOD);
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (name != null) {
builder.append("name=").append(name);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,69 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
import java.util.List;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ParticipantPublishedInfo extends Notification {
private String id;
private List<String> streams;
public ParticipantPublishedInfo(String id, List<String> streams) {
super(ProtocolElements.PARTICIPANTPUBLISHED_METHOD);
this.id = id;
this.streams = streams;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<String> getStreams() {
return streams;
}
public void setStreams(List<String> streams) {
this.streams = streams;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (id != null) {
builder.append("id=").append(id).append(", ");
}
if (streams != null) {
builder.append("streams=").append(streams);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,54 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ParticipantUnpublishedInfo extends Notification {
private String name;
public ParticipantUnpublishedInfo(String name) {
super(ProtocolElements.PARTICIPANTUNPUBLISHED_METHOD);
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (name != null) {
builder.append("name=").append(name);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,183 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* This class defines constant values of client-server messages and their
* parameters.
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class ProtocolElements {
// ---------------------------- CLIENT REQUESTS -----------------------
public static final String SENDMESSAGE_ROOM_METHOD = "sendMessage";
public static final String SENDMESSAGE_MESSAGE_PARAM = "message";
public static final String LEAVEROOM_METHOD = "leaveRoom";
public static final String JOINROOM_METHOD = "joinRoom";
public static final String JOINROOM_USER_PARAM = "user";
public static final String JOINROOM_TOKEN_PARAM = "token";
public static final String JOINROOM_ROOM_PARAM = "session";
public static final String JOINROOM_METADATA_PARAM = "metadata";
public static final String JOINROOM_SECRET_PARAM = "secret";
public static final String JOINROOM_PLATFORM_PARAM = "platform";
public static final String JOINROOM_RECORDER_PARAM = "recorder";
public static final String JOINROOM_PEERID_PARAM = "id";
public static final String JOINROOM_PEERCREATEDAT_PARAM = "createdAt";
public static final String JOINROOM_PEERSTREAMS_PARAM = "streams";
public static final String JOINROOM_PEERSTREAMID_PARAM = "id";
public static final String JOINROOM_PEERSTREAMHASAUDIO_PARAM = "hasAudio";
public static final String JOINROOM_PEERSTREAMHASVIDEO_PARAM = "hasVideo";
public static final String JOINROOM_PEERSTREAMAUDIOACTIVE_PARAM = "audioActive";
public static final String JOINROOM_PEERSTREAMVIDEOACTIVE_PARAM = "videoActive";
public static final String JOINROOM_PEERSTREAMTYPEOFVIDEO_PARAM = "typeOfVideo";
public static final String JOINROOM_PEERSTREAMFRAMERATE_PARAM = "frameRate";
public static final String JOINROOM_PEERSTREAMVIDEODIMENSIONS_PARAM = "videoDimensions";
public static final String JOINROOM_PEERSTREAMFILTER_PARAM = "filter";
public static final String PUBLISHVIDEO_METHOD = "publishVideo";
public static final String PUBLISHVIDEO_SDPOFFER_PARAM = "sdpOffer";
public static final String PUBLISHVIDEO_DOLOOPBACK_PARAM = "doLoopback";
public static final String PUBLISHVIDEO_SDPANSWER_PARAM = "sdpAnswer";
public static final String PUBLISHVIDEO_STREAMID_PARAM = "id";
public static final String PUBLISHVIDEO_CREATEDAT_PARAM = "createdAt";
public static final String PUBLISHVIDEO_HASAUDIO_PARAM = "hasAudio";
public static final String PUBLISHVIDEO_HASVIDEO_PARAM = "hasVideo";
public static final String PUBLISHVIDEO_AUDIOACTIVE_PARAM = "audioActive";
public static final String PUBLISHVIDEO_VIDEOACTIVE_PARAM = "videoActive";
public static final String PUBLISHVIDEO_TYPEOFVIDEO_PARAM = "typeOfVideo";
public static final String PUBLISHVIDEO_FRAMERATE_PARAM = "frameRate";
public static final String PUBLISHVIDEO_VIDEODIMENSIONS_PARAM = "videoDimensions";
public static final String PUBLISHVIDEO_KURENTOFILTER_PARAM = "filter";
public static final String UNPUBLISHVIDEO_METHOD = "unpublishVideo";
public static final String RECEIVEVIDEO_METHOD = "receiveVideoFrom";
public static final String RECEIVEVIDEO_SDPOFFER_PARAM = "sdpOffer";
public static final String RECEIVEVIDEO_SENDER_PARAM = "sender";
public static final String RECEIVEVIDEO_SDPANSWER_PARAM = "sdpAnswer";
public static final String UNSUBSCRIBEFROMVIDEO_METHOD = "unsubscribeFromVideo";
public static final String UNSUBSCRIBEFROMVIDEO_SENDER_PARAM = "sender";
public static final String ONICECANDIDATE_METHOD = "onIceCandidate";
public static final String ONICECANDIDATE_EPNAME_PARAM = "endpointName";
public static final String ONICECANDIDATE_CANDIDATE_PARAM = "candidate";
public static final String ONICECANDIDATE_SDPMIDPARAM = "sdpMid";
public static final String ONICECANDIDATE_SDPMLINEINDEX_PARAM = "sdpMLineIndex";
public static final String CUSTOMREQUEST_METHOD = "customRequest";
public static final String STREAMPROPERTYCHANGED_METHOD = "streamPropertyChanged";
public static final String STREAMPROPERTYCHANGED_CONNECTIONID_PARAM = "connectionId";
public static final String STREAMPROPERTYCHANGED_STREAMID_PARAM = "streamId";
public static final String STREAMPROPERTYCHANGED_PROPERTY_PARAM = "property";
public static final String STREAMPROPERTYCHANGED_NEWVALUE_PARAM = "newValue";
public static final String STREAMPROPERTYCHANGED_REASON_PARAM = "reason";
public static final String FORCEDISCONNECT_METHOD = "forceDisconnect";
public static final String FORCEDISCONNECT_CONNECTIONID_PARAM = "connectionId";
public static final String FORCEUNPUBLISH_METHOD = "forceUnpublish";
public static final String FORCEUNPUBLISH_STREAMID_PARAM = "streamId";
public static final String APPLYFILTER_METHOD = "applyFilter";
public static final String FILTER_STREAMID_PARAM = "streamId";
public static final String FILTER_TYPE_PARAM = "type";
public static final String FILTER_OPTIONS_PARAM = "options";
public static final String FILTER_METHOD_PARAM = "method";
public static final String FILTER_PARAMS_PARAM = "params";
public static final String EXECFILTERMETHOD_METHOD = "execFilterMethod";
public static final String EXECFILTERMETHOD_LASTEXECMETHOD_PARAM = "lastExecMethod";
public static final String REMOVEFILTER_METHOD = "removeFilter";
public static final String ADDFILTEREVENTLISTENER_METHOD = "addFilterEventListener";
public static final String REMOVEFILTEREVENTLISTENER_METHOD = "removeFilterEventListener";
public static final String FILTEREVENTDISPATCHED_METHOD = "filterEventDispatched";
public static final String FILTEREVENTLISTENER_CONNECTIONID_PARAM = "connectionId";
public static final String FILTEREVENTLISTENER_STREAMID_PARAM = "streamId";
public static final String FILTEREVENTLISTENER_FILTERTYPE_PARAM = "filterType";
public static final String FILTEREVENTLISTENER_EVENTTYPE_PARAM = "eventType";
public static final String FILTEREVENTLISTENER_DATA_PARAM = "data";
// ---------------------------- SERVER RESPONSES & EVENTS -----------------
public static final String PARTICIPANTJOINED_METHOD = "participantJoined";
public static final String PARTICIPANTJOINED_USER_PARAM = "id";
public static final String PARTICIPANTJOINED_CREATEDAT_PARAM = "createdAt";
public static final String PARTICIPANTJOINED_METADATA_PARAM = "metadata";
public static final String PARTICIPANTLEFT_METHOD = "participantLeft";
public static final String PARTICIPANTLEFT_NAME_PARAM = "connectionId";
public static final String PARTICIPANTLEFT_REASON_PARAM = "reason";
public static final String PARTICIPANTEVICTED_METHOD = "participantEvicted";
public static final String PARTICIPANTEVICTED_CONNECTIONID_PARAM = "connectionId";
public static final String PARTICIPANTEVICTED_REASON_PARAM = "reason";
public static final String PARTICIPANTPUBLISHED_METHOD = "participantPublished";
public static final String PARTICIPANTPUBLISHED_USER_PARAM = "id";
public static final String PARTICIPANTPUBLISHED_STREAMS_PARAM = "streams";
public static final String PARTICIPANTPUBLISHED_STREAMID_PARAM = "id";
public static final String PARTICIPANTPUBLISHED_CREATEDAT_PARAM = "createdAt";
public static final String PARTICIPANTPUBLISHED_HASAUDIO_PARAM = "hasAudio";
public static final String PARTICIPANTPUBLISHED_HASVIDEO_PARAM = "hasVideo";
public static final String PARTICIPANTPUBLISHED_AUDIOACTIVE_PARAM = "audioActive";
public static final String PARTICIPANTPUBLISHED_VIDEOACTIVE_PARAM = "videoActive";
public static final String PARTICIPANTPUBLISHED_TYPEOFVIDEO_PARAM = "typeOfVideo";
public static final String PARTICIPANTPUBLISHED_FRAMERATE_PARAM = "frameRate";
public static final String PARTICIPANTPUBLISHED_VIDEODIMENSIONS_PARAM = "videoDimensions";
public static final String PARTICIPANTPUBLISHED_FILTER_PARAM = "filter";
public static final String PARTICIPANTUNPUBLISHED_METHOD = "participantUnpublished";
public static final String PARTICIPANTUNPUBLISHED_NAME_PARAM = "connectionId";
public static final String PARTICIPANTUNPUBLISHED_REASON_PARAM = "reason";
public static final String PARTICIPANTSENDMESSAGE_METHOD = "sendMessage";
public static final String PARTICIPANTSENDMESSAGE_DATA_PARAM = "data";
public static final String PARTICIPANTSENDMESSAGE_FROM_PARAM = "from";
public static final String PARTICIPANTSENDMESSAGE_TYPE_PARAM = "type";
public static final String ROOMCLOSED_METHOD = "roomClosed";
public static final String ROOMCLOSED_ROOM_PARAM = "sessionId";
public static final String MEDIAERROR_METHOD = "mediaError";
public static final String MEDIAERROR_ERROR_PARAM = "error";
public static final String ICECANDIDATE_METHOD = "iceCandidate";
public static final String ICECANDIDATE_SENDERCONNECTIONID_PARAM = "senderConnectionId";
public static final String ICECANDIDATE_EPNAME_PARAM = "endpointName";
public static final String ICECANDIDATE_CANDIDATE_PARAM = "candidate";
public static final String ICECANDIDATE_SDPMID_PARAM = "sdpMid";
public static final String ICECANDIDATE_SDPMLINEINDEX_PARAM = "sdpMLineIndex";
public static final String RECORDINGSTARTED_METHOD = "recordingStarted";
public static final String RECORDINGSTARTED_ID_PARAM = "id";
public static final String RECORDINGSTARTED_NAME_PARAM = "name";
public static final String RECORDINGSTOPPED_REASON_PARAM = "reason";
public static final String RECORDINGSTOPPED_METHOD = "recordingStopped";
public static final String RECORDINGSTOPPED_ID_PARAM = "id";
public static final String CUSTOM_NOTIFICATION = "custonNotification";
public static final String RECORDER_PARTICIPANT_PUBLICID = "RECORDER";
}

View File

@ -1,54 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class RoomClosedInfo extends Notification {
private String room;
public RoomClosedInfo(String room) {
super(ProtocolElements.ROOMCLOSED_METHOD);
this.room = room;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (room != null) {
builder.append("room=").append(room);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,80 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.internal;
/**
* @see Notification
*
* @author <a href="mailto:rvlad@naevatec.com">Radu Tom Vlad</a>
*/
public class SendMessageInfo extends Notification {
private String room;
private String user;
private String message;
public SendMessageInfo(String room, String user, String message) {
super(ProtocolElements.PARTICIPANTSENDMESSAGE_METHOD);
this.room = room;
this.user = user;
this.message = message;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (getMethod() != null) {
builder.append("method=").append(getMethod()).append(", ");
}
if (room != null) {
builder.append("room=").append(room).append(", ");
}
if (user != null) {
builder.append("user=").append(user).append(", ");
}
if (message != null) {
builder.append("message=").append(message);
}
builder.append("]");
return builder.toString();
}
}

View File

@ -1,74 +0,0 @@
/*
* (C) Copyright 2017-2019 OpenVidu (https://openvidu.io/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.openvidu.client.test;
import static io.openvidu.client.internal.ProtocolElements.*;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.kurento.jsonrpc.client.JsonRpcClient;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import io.openvidu.client.OpenViduClient;
import io.openvidu.client.ServerJsonRpcHandler;
/**
* Unit tests for the room client protocol.
*
* @author Radu Tom Vlad (rvlad@naevatec.com)
* @since 6.3.1
*/
public class OpenViduClientTest {
private OpenViduClient client;
private ServerJsonRpcHandler serverHandler;
private JsonRpcClient jsonRpcClient;
@Before
public void setup() {
jsonRpcClient = mock(JsonRpcClient.class);
serverHandler = new ServerJsonRpcHandler();
client = new OpenViduClient(jsonRpcClient, serverHandler);
}
@Test
public void testRoomJoin() throws IOException {
JsonObject params = new JsonObject();
params.addProperty(JOINROOM_ROOM_PARAM, "room");
params.addProperty(JOINROOM_USER_PARAM, "user");
JsonObject result = new JsonObject();
JsonArray value = new JsonArray();
result.add("value", value);
Map<String, List<String>> joinResult = new HashMap<String, List<String>>();
when(jsonRpcClient.sendRequest(JOINROOM_METHOD, params)).thenReturn(result);
assertThat(client.joinRoom("room", "user"), is(joinResult));
}
}

13
openvidu-components-angular/.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
# Output of 'npm pack'
*.tgz
**/node_modules/
**/.angular/
**/.vscode
node_modules
dist/
docs/
coverage/**

View File

@ -0,0 +1,5 @@
build
node_modules
.github
dist
docs

View File

@ -0,0 +1,10 @@
{
"singleQuote": true,
"printWidth": 140,
"trailingComma": "none",
"semi": true,
"bracketSpacing": true,
"useTabs": true,
"jsxSingleQuote": true,
"tabWidth": 4
}

View File

@ -0,0 +1,43 @@
# Openvidu Angular TestAPP
## Architechture
```
openvidu-components-angular
└─── src (openvidu-components-testapp)
└───projects
└─── openvidu-components-angular
```
## How to develop with ease:
Run `ng serve` for a dev server.
Run, in a new terminal, `npm run lib:serve` for serving the openvidu-components-angular library with live reload for listening changes
## Code scaffolding
For generate new components in openvidu-components-angular:
```bash
ng g component components/component-name --project=openvidu-components-angular
```
## Build library
```bash
npm run lib:build
```
## Publishing
After the library is built, tun the following command:
```bash
cd dist/ && npm publish
```

View File

@ -0,0 +1,157 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"openvidu-components-testapp": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": {
"base": "dist/openvidu-components-testapp",
"browser": ""
},
"index": "src/index.html",
"polyfills": ["zone.js"],
"tsConfig": "tsconfig.app.json",
"aot": true,
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": [],
"browser": "src/main.ts"
},
"configurations": {
"development": {
"optimization": false,
"outputHashing": "all",
"sourceMap": true,
"namedChunks": false,
"extractLicenses": true
},
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"extractLicenses": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"proxyConfig": "src/proxy.conf.json",
"buildTarget": "openvidu-components-testapp:build"
},
"configurations": {
"development": {
"buildTarget": "openvidu-components-testapp:build:development"
},
"production": {
"buildTarget": "openvidu-components-testapp:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "openvidu-components-testapp:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": ["zone.js"],
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": []
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": ["tsconfig.app.json", "tsconfig.spec.json", "e2e/tsconfig.json"],
"exclude": ["**/node_modules/**"]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "openvidu-components-testapp:serve"
},
"configurations": {
"production": {
"devServerTarget": "openvidu-components-testapp:serve:production"
}
}
}
}
},
"openvidu-components-angular": {
"projectType": "library",
"root": "projects/openvidu-components-angular",
"sourceRoot": "projects/openvidu-components-angular/src",
"prefix": "ov",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"project": "projects/openvidu-components-angular/ng-package.json"
},
"configurations": {
"production": {
"tsConfig": "projects/openvidu-components-angular/tsconfig.lib.prod.json"
},
"development": {
"tsConfig": "projects/openvidu-components-angular/tsconfig.lib.json"
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/openvidu-components-angular/src/test.ts",
"tsConfig": "projects/openvidu-components-angular/tsconfig.spec.json",
"karmaConfig": "projects/openvidu-components-angular/karma.conf.js"
}
}
}
}
},
"cli": {
"analytics": false
}
}

View File

@ -0,0 +1,621 @@
import { Builder, WebDriver } from 'selenium-webdriver';
import { TestAppConfig } from './selenium.conf';
import { OpenViduComponentsPO } from './utils.po.test';
let url = '';
describe('Testing API Directives', () => {
let browser: WebDriver;
let utils: OpenViduComponentsPO;
async function createChromeBrowser(): Promise<WebDriver> {
return await new Builder()
.forBrowser(TestAppConfig.browserName)
.withCapabilities(TestAppConfig.browserCapabilities)
.setChromeOptions(TestAppConfig.browserOptions)
.usingServer(TestAppConfig.seleniumAddress)
.build();
}
beforeEach(async () => {
browser = await createChromeBrowser();
utils = new OpenViduComponentsPO(browser);
url = `${TestAppConfig.appUrl}&roomName=API_DIRECTIVES_${Math.floor(Math.random() * 1000)}`;
});
afterEach(async () => {
// console.log('data:image/png;base64,' + await browser.takeScreenshot());
try {
if (await utils.isPresent('#session-container')) {
await utils.leaveRoom();
}
} catch (error) {}
await browser.sleep(500);
await browser.quit();
});
it('should set the MINIMAL UI', async () => {
await browser.get(`${url}&minimal=true`);
// Checking if prejoin page exist
await utils.checkPrejoinIsPresent();
// Checking if audio detection is not displayed
expect(await utils.isPresent('#audio-wave-container')).toBeFalse();
const joinButton = await utils.waitForElement('#join-button');
await joinButton.click();
// Checking if session container is present
await utils.checkSessionIsPresent();
// Checking if layout is present
await utils.checkLayoutPresent();
// Checking if stream component is present
utils.checkStreamIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if screenshare button is not present
expect(await utils.isPresent('#screenshare-btn')).toBeFalse();
// Checking if more options button is not present
expect(await utils.isPresent('#more-options-btn')).toBeFalse();
// Checking if participants panel button is not present
expect(await utils.isPresent('#participants-panel-btn')).toBeFalse();
// Checking if activities panel button is not present
expect(await utils.isPresent('#activities-panel-btn')).toBeFalse();
// Checking if logo is not displayed
expect(await utils.isPresent('#branding-logo')).toBeFalse();
// Checking if session name is not displayed
expect(await utils.isPresent('#session-name')).toBeFalse();
// Checking if nickname is not displayed
expect(await utils.getNumberOfElements('#participant-name-container')).toEqual(0);
// Checking if audio detection is not displayed
expect(await utils.isPresent('#audio-wave-container')).toBeFalse();
// Checking if settings button is not displayed
expect(await utils.isPresent('#settings-container')).toBeFalse();
});
it('should change the UI LANG in prejoin page', async () => {
await browser.get(`${url}&lang=es`);
await utils.checkPrejoinIsPresent();
await utils.waitForElement('#lang-btn-compact');
const element = await utils.waitForElement('#join-button');
expect(await element.getText()).toEqual('Unirme ahora');
});
it('should change the UI LANG in room page', async () => {
await browser.get(`${url}&prejoin=false&lang=es`);
await utils.checkLayoutPresent();
await utils.checkToolbarIsPresent();
await utils.togglePanel('settings');
await utils.waitForElement('.sidenav-menu');
expect(await utils.isPresent('#default-settings-panel')).toBeTrue();
const panelTitle = await utils.waitForElement('.panel-title');
expect(await panelTitle.getText()).toEqual('Configuración');
const element = await utils.waitForElement('#lang-selected-name');
expect(await element.getAttribute('innerText')).toEqual('Español');
});
it('should override the LANG OPTIONS', async () => {
await browser.get(`${url}&prejoin=true&langOptions=true`);
await utils.checkPrejoinIsPresent();
await utils.waitForElement('#lang-btn-compact');
await utils.clickOn('#lang-btn-compact');
await browser.sleep(500);
expect(await utils.getNumberOfElements('.lang-menu-opt')).toEqual(2);
await utils.clickOn('.lang-menu-opt');
await browser.sleep(500);
await utils.clickOn('#join-button');
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
await utils.togglePanel('settings');
await browser.sleep(500);
await utils.waitForElement('#settings-container');
await utils.waitForElement('.lang-button');
await utils.clickOn('.lang-button');
await browser.sleep(500);
expect(await utils.getNumberOfElements('.lang-menu-opt')).toEqual(2);
});
it('should show the PREJOIN page', async () => {
await browser.get(`${url}&prejoin=true`);
await utils.checkPrejoinIsPresent();
});
it('should not show the PREJOIN page', async () => {
await browser.get(`${url}&prejoin=false`);
await utils.checkSessionIsPresent();
});
it('should join to Room', async () => {
await browser.get(`${url}`);
// Checking if prejoin page exist
await utils.checkPrejoinIsPresent();
const joinButton = await utils.waitForElement('#join-button');
await joinButton.click();
// Checking if session container is present
await utils.checkSessionIsPresent();
await utils.checkToolbarIsPresent();
// Checking if screenshare button is not present
expect(await utils.isPresent('#screenshare-btn')).toBeTrue();
});
it('should show the token error WITH prejoin page', async () => {
const fixedUrl = `${TestAppConfig.appUrl}&roomName=TEST_TOKEN&participantName=PNAME`;
await browser.get(`${fixedUrl}`);
// Checking if prejoin page exist
await utils.checkPrejoinIsPresent();
await utils.waitForElement('#join-button');
await utils.clickOn('#join-button');
// Checking if session container is present
await utils.checkSessionIsPresent();
// Starting new browser for adding a new participant
const newTabScript = `window.open("${fixedUrl}")`;
await browser.executeScript(newTabScript);
// Go to first tab
const tabs = await browser.getAllWindowHandles();
browser.switchTo().window(tabs[1]);
await utils.checkPrejoinIsPresent();
await utils.waitForElement('#join-button');
await utils.clickOn('#join-button');
// Checking if token error is displayed
await utils.waitForElement('#token-error');
expect(await utils.isPresent('#token-error')).toBeTrue();
});
it('should show the token error WITHOUT prejoin page', async () => {
const fixedUrl = `${TestAppConfig.appUrl}&roomName=TOKEN_ERROR&prejoin=false&participantName=PNAME`;
await browser.get(`${fixedUrl}`);
// Checking if session container is present
await utils.checkSessionIsPresent();
// Starting new browser for adding a new participant
const newTabScript = `window.open("${fixedUrl}")`;
await browser.executeScript(newTabScript);
// Go to first tab
const tabs = await browser.getAllWindowHandles();
browser.switchTo().window(tabs[1]);
// Checking if token error is displayed
await utils.waitForElement('#openvidu-dialog');
expect(await utils.isPresent('#openvidu-dialog')).toBeTrue();
});
it('should run the app with VIDEO DISABLED in prejoin page', async () => {
await browser.get(`${url}&prejoin=true&videoEnabled=false`);
await utils.checkPrejoinIsPresent();
// Checking if video is displayed
await utils.waitForElement('#video-poster');
expect(await utils.getNumberOfElements('video')).toEqual(0);
await utils.waitForElement('#videocam_off');
await utils.clickOn('#join-button');
await utils.checkSessionIsPresent();
await utils.waitForElement('#videocam_off');
expect(await utils.isPresent('#videocam_off')).toBeTrue();
await utils.waitForElement('#video-poster');
expect(await utils.getNumberOfElements('video')).toEqual(0);
});
it('should run the app with VIDEO DISABLED and WITHOUT PREJOIN page', async () => {
await browser.get(`${url}&prejoin=false&videoEnabled=false`);
await utils.checkSessionIsPresent();
await utils.checkLayoutPresent();
// Checking if video is displayed
await utils.waitForElement('#video-poster');
expect(await utils.getNumberOfElements('video')).toEqual(0);
expect(await utils.getNumberOfElements('#video-poster')).toEqual(1);
await utils.waitForElement('#videocam_off');
expect(await utils.isPresent('#videocam_off')).toBeTrue();
});
it('should run the app with AUDIO DISABLED in prejoin page', async () => {
await browser.get(`${url}&audioEnabled=false`);
await utils.checkPrejoinIsPresent();
// Checking if video is displayed
await utils.checkVideoElementIsPresent();
expect(await utils.getNumberOfElements('video')).toEqual(1);
expect(await utils.getNumberOfElements('audio')).toEqual(0);
await utils.waitForElement('#mic_off');
expect(await utils.isPresent('#mic_off')).toBeTrue();
await utils.clickOn('#join-button');
await utils.checkSessionIsPresent();
expect(await utils.getNumberOfElements('video')).toEqual(1);
expect(await utils.getNumberOfElements('audio')).toEqual(0);
await utils.waitForElement('#mic_off');
expect(await utils.isPresent('#mic_off')).toBeTrue();
});
it('should run the app with AUDIO DISABLED and WITHOUT PREJOIN page', async () => {
await browser.get(`${url}&prejoin=false&audioEnabled=false`);
await browser.sleep(1000);
await utils.checkSessionIsPresent();
// Checking if video is displayed
await utils.checkVideoElementIsPresent();
expect(await utils.getNumberOfElements('video')).toEqual(1);
expect(await utils.getNumberOfElements('audio')).toEqual(0);
await utils.waitForElement('#mic_off');
expect(await utils.isPresent('#mic_off')).toBeTrue();
});
it('should run the app without camera button', async () => {
await browser.get(`${url}&prejoin=false&cameraBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if camera button is not present
expect(await utils.isPresent('#camera-btn')).toBeFalse();
});
it('should run the app without microphone button', async () => {
await browser.get(`${url}&prejoin=false&microphoneBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if microphone button is not present
expect(await utils.isPresent('#microphone-btn')).toBeFalse();
});
it('should HIDE the SCREENSHARE button', async () => {
await browser.get(`${url}&prejoin=false&screenshareBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if screenshare button is not present
expect(await utils.isPresent('#screenshare-btn')).toBeFalse();
});
it('should HIDE the FULLSCREEN button', async () => {
await browser.get(`${url}&prejoin=false&fullscreenBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
await utils.toggleToolbarMoreOptions();
expect(await utils.getNumberOfElements('#fullscreen-btn')).toEqual(0);
});
xit('should HIDE the CAPTIONS button', async () => {
await browser.get(`${url}&prejoin=false&toolbarCaptionsBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
await utils.toggleToolbarMoreOptions();
// Checking if captions button is not present
expect(await utils.isPresent('#captions-btn')).toBeFalse();
await utils.clickOn('#toolbar-settings-btn');
await browser.sleep(500);
await utils.waitForElement('.settings-container');
expect(await utils.isPresent('.settings-container')).toBeTrue();
expect(await utils.isPresent('#captions-opt')).toBeFalse();
});
it('should HIDE the TOOLBAR RECORDING button', async () => {
await browser.get(`${url}&prejoin=false&toolbarRecordingButton=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
await utils.toggleToolbarMoreOptions();
// Checking if recording button is not present
expect(await utils.isPresent('#recording-btn')).toBeFalse();
});
it('should HIDE the TOOLBAR BROADCASTING button', async () => {
await browser.get(`${url}&prejoin=false&toolbarBroadcastingButton=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
await utils.toggleToolbarMoreOptions();
// Checking if broadcasting button is not present
expect(await utils.isPresent('#broadcasting-btn')).toBeFalse();
});
it('should HIDE the TOOLBAR SETTINGS button', async () => {
await browser.get(`${url}&prejoin=false&toolbarSettingsBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Open more options menu
await utils.toggleToolbarMoreOptions();
expect(await utils.isPresent('#toolbar-settings-btn')).toBeFalse();
});
it('should HIDE the LEAVE button', async () => {
await browser.get(`${url}&prejoin=false&leaveBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if leave button is not present
expect(await utils.getNumberOfElements('#leave-btn')).toEqual(0);
});
it('should HIDE the ACTIVITIES PANEL button', async () => {
await browser.get(`${url}&prejoin=false&activitiesPanelBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if activities panel button is not present
expect(await utils.isPresent('#activities-panel-btn')).toBeFalse();
});
it('should HIDE the CHAT PANEL button', async () => {
await browser.get(`${url}&prejoin=false&chatPanelBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if chat panel button is not present
expect(await utils.isPresent('#chat-panel-btn')).toBeFalse();
});
it('should HIDE the PARTICIPANTS PANEL button', async () => {
await browser.get(`${url}&prejoin=false&participantsPanelBtn=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if participants panel button is not present
expect(await utils.isPresent('#participants-panel-btn')).toBeFalse();
});
it('should HIDE the LOGO', async () => {
await browser.get(`${url}&prejoin=false&displayLogo=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if toolbar is present
await utils.waitForElement('#info-container');
expect(await utils.isPresent('#info-container')).toBeTrue();
// Checking if logo is not displayed
expect(await utils.isPresent('#branding-logo')).toBeFalse();
});
it('should HIDE the ROOM NAME', async () => {
await browser.get(`${url}&prejoin=false&displayRoomName=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if toolbar is present
await utils.waitForElement('#info-container');
expect(await utils.isPresent('#info-container')).toBeTrue();
// Checking if session name is not displayed
expect(await utils.isPresent('#session-name')).toBeFalse();
});
it('should HIDE the PARTICIPANT NAME', async () => {
await browser.get(`${url}&prejoin=false&displayParticipantName=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if stream component is present
await utils.checkStreamIsPresent();
// Checking if nickname is not present
expect(await utils.isPresent('#participant-name-container')).toBeFalse();
});
it('should HIDE the AUDIO DETECTION element', async () => {
await browser.get(`${url}&prejoin=false&displayAudioDetection=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if stream component is present
await utils.checkStreamIsPresent();
// Checking if audio detection is not present
expect(await utils.isPresent('#audio-wave-container')).toBeFalse();
});
it('should HIDE the STREAM VIDEO CONTROLS button', async () => {
await browser.get(`${url}&prejoin=false&videoControls=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
// Checking if stream component is present
await utils.checkStreamIsPresent();
// Checking if settings button is not present
expect(await utils.isPresent('.stream-video-controls')).toBeFalse();
});
it('should HIDE the MUTE button in participants panel', async () => {
const roomName = 'e2etest';
const fixedUrl = `${TestAppConfig.appUrl}&prejoin=false&participantMuteBtn=false&roomName=${roomName}`;
await browser.get(fixedUrl);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
const participantsButton = await utils.waitForElement('#participants-panel-btn');
await participantsButton.click();
// Checking if participatns panel is displayed
await utils.waitForElement('#participants-container');
expect(await utils.isPresent('#participants-container')).toBeTrue();
// Checking remote participants item
expect(await utils.isPresent('#remote-participant-item')).toBeFalse();
// Starting new browser for adding a new participant
const newTabScript = `window.open("${fixedUrl}&participantName=SecondParticipant")`;
await browser.executeScript(newTabScript);
await browser.sleep(10000);
// Go to first tab
const tabs = await browser.getAllWindowHandles();
browser.switchTo().window(tabs[0]);
// Checking if mute button is not displayed in participant item
await utils.waitForElement('#remote-participant-item');
expect(await utils.isPresent('#remote-participant-item')).toBeTrue();
expect(await utils.isPresent('#mute-btn')).toBeFalse();
});
it('should HIDE the RECORDING ACTIVITY in activities panel', async () => {
let element;
const fixedUrl = `${url}&prejoin=false&activitiesPanelRecordingActivity=false`;
await browser.get(fixedUrl);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
element = await utils.waitForElement('#activities-panel-btn');
await element.click();
// Checking if participatns panel is displayed
await utils.waitForElement('#default-activities-panel');
expect(await utils.isPresent('#default-activities-panel')).toBeTrue();
// await browser.sleep(1000);
// Checking if recording activity exists
await utils.waitForElement('.activities-body-container');
expect(await utils.isPresent('ov-recording-activity')).toBeFalse();
});
it('should HIDE the BROADCASTING ACTIVITY in activities panel', async () => {
await browser.get(`${url}&prejoin=false&activitiesPanelBroadcastingActivity=false`);
await utils.checkSessionIsPresent();
// Checking if toolbar is present
await utils.checkToolbarIsPresent();
await utils.waitForElement('#activities-panel-btn');
await utils.clickOn('#activities-panel-btn');
// Checking if participatns panel is displayed
await utils.waitForElement('#default-activities-panel');
expect(await utils.isPresent('#default-activities-panel')).toBeTrue();
// await browser.sleep(1000);
// Checking if recording activity exists
await utils.waitForElement('.activities-body-container');
expect(await utils.isPresent('ov-broadcasting-activity')).toBeFalse();
});
});

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More