Although this may not be the exact solution you were looking for, it's important to consider the following points.
In summary:
Your current approach may not align with typical App Engine use cases and using App Engine for this purpose might not be the best choice.
Detailed Explanation:
- It seems that the channel API is not suitable for streaming large amounts of data efficiently. The primary function of the channel API is to provide regular updates to clients, such as in real-time chat applications or news tickers. In situations where constant updates are required, like desktop or video streaming, continuously notifying the client may not be an ideal solution. It might be more efficient to have the client request specific content from the server instead of pushing all updates through the channel API.
- Using screenshots to share a desktop could lead to unnecessary data transmission due to inefficiencies in compression. Traditional remote desktop systems utilize compression techniques similar to video compression, transmitting only changes between frames to reduce bandwidth consumption. Minimizing data flow is crucial in maintaining optimal performance and reducing latency in streaming scenarios.
- App Engine is designed to handle multiple parallel connections by distributing tasks across instances with enforced restrictions on request deadlines and bandwidth usage. Continuous streaming, such as video or remote desktop sharing, may not be feasible within these limitations. Constant polling could trigger frequent instance spawns, resulting in delays and warm-up requests that hinder real-time streaming capabilities.
Instead of focusing on what doesn't work, here's a suggested approach:
- Utilize dedicated streaming servers that enable direct streaming to clients.
- Integrate streaming server URLs into your App Engine application.
- Have your AngularJS application request streams directly from the designated servers.
- Let App Engine facilitate communication by providing streaming server information to the AngularJS application.
- Enable clients to access the stream directly from the server without intermediary proxies.
This method bypasses App Engine as a middleman for streaming data, ensuring a more streamlined process while requiring direct server accessibility.
Alternatively, consider utilizing existing platforms like twitch.tv for desktop streaming solutions that eliminate the need for custom coding. Integrating external streaming services into your Angular application can offer convenient options without delving deeply into software recommendations specifically.