Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MIN-145] 画面共有機能の実装 #80

Open
3 tasks
yuminn-k opened this issue Mar 7, 2024 · 0 comments
Open
3 tasks

[MIN-145] 画面共有機能の実装 #80

yuminn-k opened this issue Mar 7, 2024 · 0 comments
Assignees
Labels
📬 API 서버 API 통신 ✨ Feature 기능 개발 ⏰ P1 반드시 해결해야 하는 중요한 이슈나 문제 (예: 버그, 취약점 등)

Comments

@yuminn-k
Copy link
Member

yuminn-k commented Mar 7, 2024

📝 Issueの概要

このIssueの目的は、WebRTCを使用してリアルタイムの画面共有機能を実装することです。主に設計と開発に焦点を当て、安定かつ効率的な画面共有システムの構築を目指します。

📚 背景情報

現在のプロジェクトでは、リモートワークやオンラインコラボレーションが増えているため、効率的な画面共有機能の需要が高まっています。WebRTCはリアルタイム通信に最適な技術であり、この機能の実装には欠かせません。

📋 具体的な作業内容

  1. WebRTCを使用した基本的な画面共有の設計と実装
  2. 画面共有データのバックエンド処理の最適化
  3. セキュリティとプライバシーの確保

📎 関連するIssueやTrello、ドキュメント

🖼️ 参考スクリーンショットや図

(ここにスクリーンショットや図を追加)

🔄 Issueの進行状況

  • WebRTCの基本設計
  • バックエンド処理の実装
  • セキュリティ対策の実施
@yuminn-k yuminn-k added ⏰ P1 반드시 해결해야 하는 중요한 이슈나 문제 (예: 버그, 취약점 등) ✨ Feature 기능 개발 📬 API 서버 API 통신 labels Mar 7, 2024
@yuminn-k yuminn-k moved this to Ready in ミノリ Mar 7, 2024
@yuminn-k yuminn-k self-assigned this Mar 7, 2024
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 9, 2024
Implement the WebSocket logic for creating and joining live classes. This includes modifications in the controller and service layers to support real-time interactions in the live class environment.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 16, 2024
- Add new functions to start and stop screen sharing in LiveClassService.
- Handle new API endpoints for starting and stopping screen sharing in LiveClassController.
- Include WebRTC configuration for peer connection.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 16, 2024
- Document new endpoints for screen sharing feature.
- Ensure accurate Swagger annotations for API parameters and responses.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 16, 2024
- Improve JWT parsing and validation logic to ensure robust security.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 16, 2024
…ring

- Update Go modules to latest versions compatible with WebRTC.
- Adjust Redis client initialization to handle new room management needs.

Related issue: YJU-OKURA#80
@yuminn-k yuminn-k moved this from Ready to In progress in ミノリ Apr 17, 2024
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
…eanup

Updated the LiveClassController to enhance readability and maintainability. Improved documentation comments across all methods and structures to align with Clean Code principles, ensuring each function's purpose and usage are clearly described. This update facilitates easier future modifications and better code comprehension.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Improved the Swagger documentation annotations for the LiveClass API endpoints. This update provides clearer API descriptions and parameter details, enhancing the developer experience and API usability through better generated documentation.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Refactored the liveClassService to incorporate more robust admin checks and streamline the peer connection setup process for starting and stopping screen shares. This refactor enhances security and improves the reliability of the screen sharing feature by ensuring only authorized users can control the session.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Updated various dependencies and performed general enhancements throughout the codebase. This includes minor bug fixes, performance improvements, and better resource management. These updates ensure the application remains reliable and efficient under new library versions.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Add a new API endpoint to allow users to view the screen sharing information. This includes updates to the LiveClassController and swagger documentation to reflect the new endpoint usage. Updated the service layer to handle the retrieval of screen sharing details.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Update the Swagger API documentation to include the new view screen share endpoint and clarify existing documentation around screen sharing processes. Ensure that all parameters and responses are accurately described.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Improve code formatting for better readability in the LiveClassService implementation. This includes better alignment of code blocks, consistent use of whitespace, and organizing imports.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 17, 2024
Refactor the LiveClassController to use predefined constants from the 'constants' package instead of raw integers for HTTP status codes. This change enhances code readability and maintainability by utilizing consistent references throughout the application.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 21, 2024
Adjusted the route parameters and setup in setupLiveClassRoutes to fix an issue where the screen sharing API was returning a 404 error. This ensures that the route correctly matches the intended handler functions.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 22, 2024
This commit introduces comprehensive updates to the live class screen sharing feature. It includes the creation, start, and stop handlers for screen sharing sessions within our live class environment. The commit also refactors existing code to improve stability and performance during screen sharing sessions. Changes include error handling enhancements and better state management for the WebRTC peer connections, ensuring robust session control. Additionally, the Swagger documentation has been updated to reflect the new API endpoints and their functionalities.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 22, 2024
Updated the Swagger API documentation to include the new endpoints and parameters introduced for managing screen sharing in live classes. This documentation now accurately reflects the endpoints for creating rooms, starting and stopping screen sharing, and joining screen shares, complete with necessary authentication details and expected responses for success or failure scenarios. This update ensures that API consumers have accurate and detailed information for integrating with our live class features.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 23, 2024
This commit introduces the screen sharing feature using the Pion WebRTC library. The implementation includes the setup of ICE servers, session management, and local track handling for broadcasting the screen. The code also integrates with existing server infrastructure, ensuring compatibility with the current signaling system.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 23, 2024
Refactored the WebRTC setup to support screen sharing via WebSocket. This includes the integration of the websocket package to manage live connections and broadcast messages effectively. The changes are focused on enhancing the screen share functionality in the application, ensuring smoother and more reliable performance during live sessions.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
This commit introduces improvements in the WebRTC configuration and session handling for robust screen sharing. Changes include the setup of new peer connections with updated SDP handling processes to enhance the performance and reliability of live screen sharing sessions. This update aims to provide smoother video transmission by refining the interceptor registration and session description handling mechanisms.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
Simplified the screen sharing initiation and information retrieval process by integrating direct API calls for stream management. The updates include:
- Removed user ID dependency and adjusted the GetScreenShareInfo function to fetch screen share data directly using class ID, enhancing efficiency and reducing potential user errors.
- Implemented StartStreamingSession to handle streaming URL generation through a centralized streaming service API, ensuring a more robust and maintainable stream initiation process.
- Optimized SaveScreenShareInfo to uniformly handle screen sharing data storage with proper error handling and response structures, improving data integrity and error feedback.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
This commit replaces the existing WebSocket implementation with Socket.IO for better real-time communication capabilities and easier event handling. Adjustments include using Socket.IO's events like `connect`, `disconnect`, `offer`, `answer`, and `candidate` for streamlined processing of RTC signals.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
Refactor the main.go file to optimize socket and WebRTC integrations by simplifying and centralizing event handling and connection management. This update includes the consolidation of methods that handle socket events and the reduction of redundant code, enhancing maintainability and performance.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
Set up a new route in the Gin router to handle WebSocket connections
using the existing handleConnections function. This allows for
real-time communication features in the application.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
Refined the WebSocket and WebRTC integration for more robust message handling and updated the structure to accommodate new data types in the WebRTC signaling process. These changes aim to improve the clarity and maintainability of the code, as well as to ensure more reliable session descriptions and candidate information exchange.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue Apr 24, 2024
Updated the WebSocket error handling and improved WebRTC configuration to stabilize connections and enhance media transmission efficiency. Adjustments were made to ensure better error resilience and optimize ICE gathering process.

Related issue: YJU-OKURA#80
@yuminn-k yuminn-k changed the title 画面共有機能の実装 [MIN-145] 画面共有機能の実装 May 4, 2024
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue May 4, 2024
- Added WebRTC logic to handle screen sharing functionality.
- Implemented mechanisms for upgrading WebSocket connections and managing peer connections.
- Set up handlers for dispatching keyframes, handling incoming tracks, and processing WebSocket messages.
- Introduced screen sharing start and stop handlers to manage screen sharing sessions.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue May 4, 2024
Removed unused comment

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue May 5, 2024
Updated the Pion WebRTC library from v4.0.0-beta.17 to v4.0.0-beta.19. Performed module clean-up using `go mod tidy` to ensure project dependencies are streamlined.

Related issue: YJU-OKURA#80
yuminn-k added a commit to yuminn-k/project_minori-gin-deployment-repo that referenced this issue May 8, 2024
Added WebSocket and WebRTC integration to enable screen sharing functionality in the live class routes. This implementation ensures that only authenticated users can start and view screen shares, leveraging the existing WebSocket setup for real-time communication. Key frame dispatching, ICE candidate handling, and SDP negotiation are correctly managed to support robust screen sharing sessions.

Related issue: YJU-OKURA#80
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📬 API 서버 API 통신 ✨ Feature 기능 개발 ⏰ P1 반드시 해결해야 하는 중요한 이슈나 문제 (예: 버그, 취약점 등)
Projects
Status: In progress
Development

No branches or pull requests

1 participant