Top Related Projects
Pure Go implementation of the WebRTC API
coturn TURN server project
Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.
Simple peer-to-peer with WebRTC.
WebRTC Web demos and samples
RTCMultiConnection is a WebRTC JavaScript library for peer-to-peer applications (screen sharing, audio/video conferencing, file sharing, media streaming etc.)
Quick Overview
Screego/server is an open-source screen sharing solution for developers. It allows users to share their screen with others through a web browser, providing a simple and efficient way to collaborate remotely. The project is designed to be self-hosted and easy to set up.
Pros
- Easy to set up and self-host
- Supports multiple concurrent screen sharing sessions
- Secure, with end-to-end encryption
- Cross-platform compatibility (works on various operating systems and browsers)
Cons
- Requires server setup and maintenance
- May have limited scalability for large organizations
- Fewer features compared to some commercial screen sharing solutions
- Potential for higher latency depending on server location and network conditions
Getting Started
To get started with Screego/server, follow these steps:
- Download the latest release from the GitHub repository.
- Extract the files to a directory on your server.
- Create a configuration file named
screego.config.yml
in the same directory:
server:
address: :5050
secret: <your-secret-here>
- Run the server:
./screego serve
- Access the Screego web interface by navigating to
http://your-server-ip:5050
in your web browser.
Note: For production use, it's recommended to set up HTTPS and adjust other configuration options as needed.
Competitor Comparisons
Pure Go implementation of the WebRTC API
Pros of webrtc
- More comprehensive WebRTC implementation, offering broader functionality beyond screen sharing
- Higher flexibility for custom WebRTC applications and use cases
- Larger community and more frequent updates
Cons of webrtc
- Steeper learning curve due to its more extensive API and features
- Requires more setup and configuration for specific use cases like screen sharing
- May have higher resource usage for simpler applications
Code Comparison
webrtc:
peerConnection, err := webrtc.NewPeerConnection(webrtc.Configuration{
ICEServers: []webrtc.ICEServer{
{
URLs: []string{"stun:stun.l.google.com:19302"},
},
},
})
server:
room, err := s.rooms.Create(roomName, password, screensharer, s.turnServer)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
The webrtc code snippet shows the creation of a peer connection with ICE server configuration, while the server code demonstrates room creation with a turn server. This highlights the difference in abstraction levels, with server providing higher-level functionality specific to screen sharing, and webrtc offering lower-level WebRTC primitives.
coturn TURN server project
Pros of coturn
- More comprehensive TURN/STUN server with broader protocol support
- Highly configurable with extensive options for customization
- Widely adopted and battle-tested in production environments
Cons of coturn
- More complex setup and configuration process
- Requires more system resources due to its extensive feature set
- Steeper learning curve for newcomers to TURN/STUN technologies
Code comparison
coturn configuration example:
listening-port=3478
listening-ip=0.0.0.0
relay-ip=0.0.0.0
external-ip=203.0.113.10
realm=example.com
screego configuration example:
turn:
public_ip: 203.0.113.10
port_range:
start: 50000
end: 50100
Summary
coturn is a more feature-rich and flexible TURN/STUN server solution, suitable for complex deployments and advanced use cases. It offers extensive configuration options but requires more expertise to set up and manage.
screego, on the other hand, provides a simpler, more focused solution for screen sharing and collaboration. It's easier to set up and use, making it a good choice for projects that don't require the full range of TURN/STUN features.
The choice between the two depends on the specific requirements of your project, the level of customization needed, and the available resources for deployment and maintenance.
Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.
Pros of Jitsi Meet
- More comprehensive video conferencing solution with features like chat, screen sharing, and recording
- Larger community and more active development, with frequent updates and improvements
- Supports mobile platforms (iOS and Android) in addition to web browsers
Cons of Jitsi Meet
- More complex setup and configuration compared to Screego
- Higher resource requirements due to its broader feature set
- May be overkill for simple screen sharing use cases
Code Comparison
Jitsi Meet (JavaScript):
import { createLocalTracks } from 'lib-jitsi-meet';
const localTracks = await createLocalTracks({ devices: ['audio', 'video'] });
conference.addTrack(localTracks[0]);
conference.addTrack(localTracks[1]);
Screego (Go):
func (r *RoomManager) Create(opts RoomOptions) (string, error) {
room := NewRoom(opts)
r.rooms[room.ID] = room
return room.ID, nil
}
The code snippets highlight the different approaches:
- Jitsi Meet focuses on creating and managing media tracks for video conferencing
- Screego emphasizes simplicity in room creation and management for screen sharing
Both projects serve different purposes, with Jitsi Meet offering a full-featured video conferencing solution and Screego providing a lightweight screen sharing alternative.
Simple peer-to-peer with WebRTC.
Pros of PeerJS
- Simpler to use for basic peer-to-peer connections
- Provides a higher-level abstraction for WebRTC
- Better suited for small to medium-scale projects
Cons of PeerJS
- Less control over low-level WebRTC configurations
- May not scale as well for large-scale applications
- Limited built-in features compared to server
Code Comparison
PeerJS:
const peer = new Peer();
peer.on('open', (id) => {
console.log('My peer ID is: ' + id);
});
server:
server := screego.New(screego.Config{
Rooms: screego.RoomConfig{
MaxSize: 4,
},
})
server.Start()
Key Differences
- PeerJS focuses on simplifying WebRTC peer connections, while server provides a more comprehensive screen sharing solution
- server is written in Go, offering potential performance benefits for large-scale deployments
- PeerJS is more suitable for general peer-to-peer communication, whereas server specializes in screen sharing functionality
Use Cases
- Choose PeerJS for quick implementation of basic peer-to-peer connections in web applications
- Opt for server when building a robust, scalable screen sharing platform with more advanced features
Community and Support
- PeerJS has a larger community and more resources available for beginners
- server offers more specialized support for screen sharing applications
WebRTC Web demos and samples
Pros of samples
- Comprehensive collection of WebRTC examples covering various use cases
- Regularly updated with the latest WebRTC features and best practices
- Excellent learning resource for developers new to WebRTC
Cons of samples
- Not a ready-to-use solution for screen sharing or remote desktop
- Requires more setup and integration work to build a complete application
- May be overwhelming for developers looking for a specific implementation
Code Comparison
samples (JavaScript):
const peerConnection = new RTCPeerConnection(configuration);
const dataChannel = peerConnection.createDataChannel("myChannel");
dataChannel.onmessage = (event) => {
console.log("Received:", event.data);
};
server (Go):
func (r *Room) AddClient(w http.ResponseWriter, req *http.Request) {
client := NewClient(r, w, req)
r.clients[client.ID] = client
defer r.RemoveClient(client)
client.ReadLoop()
}
Summary
samples provides a wide range of WebRTC examples and is an excellent learning resource, while server is a more focused solution for screen sharing. samples offers greater flexibility but requires more integration work, whereas server provides a ready-to-use implementation for specific use cases. The code comparison highlights the different languages and approaches used in each project.
RTCMultiConnection is a WebRTC JavaScript library for peer-to-peer applications (screen sharing, audio/video conferencing, file sharing, media streaming etc.)
Pros of RTCMultiConnection
- More comprehensive WebRTC solution with support for audio/video conferencing, screen sharing, and file transfer
- Extensive documentation and examples for various use cases
- Active community and regular updates
Cons of RTCMultiConnection
- Steeper learning curve due to its extensive feature set
- May be overkill for simple screen sharing applications
- Requires more setup and configuration compared to Server
Code Comparison
RTCMultiConnection:
connection.socketURL = 'https://rtcmulticonnection.herokuapp.com:443/';
connection.session = {
audio: true,
video: true,
screen: true
};
connection.open('room-id');
Server:
s := screego.New(screego.Config{
Addr: ":5050",
Turn: screego.TurnConfig{
Secret: "mysecret",
},
})
s.Start()
RTCMultiConnection offers a more feature-rich API for various WebRTC functionalities, while Server provides a simpler, focused solution for screen sharing. RTCMultiConnection requires more client-side JavaScript setup, whereas Server emphasizes server-side configuration in Go.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
screego/server
screen sharing for developers
Intro
In the past I've had some problems sharing my screen with coworkers using corporate chatting solutions like Microsoft Teams. I wanted to show them some of my code, but either the stream lagged several seconds behind or the quality was so poor that my colleagues couldn't read the code. Or both.
That's why I created screego. It allows you to share your screen with good quality and low latency. Screego is an addition to existing software and only helps to share your screen. Nothing else (:.
Features
- Multi User Screenshare
- Secure transfer via WebRTC
- Low latency / High resolution
- Simple Install via Docker / single binary
- Integrated TURN Server see NAT Traversal
Demo / Public Instance á« Installation á« Configuration
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Top Related Projects
Pure Go implementation of the WebRTC API
coturn TURN server project
Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.
Simple peer-to-peer with WebRTC.
WebRTC Web demos and samples
RTCMultiConnection is a WebRTC JavaScript library for peer-to-peer applications (screen sharing, audio/video conferencing, file sharing, media streaming etc.)
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot