Convert Figma logo to code with AI

screego logoserver

screen sharing for developers https://screego.net/

8,497
613
8,497
9

Top Related Projects

14,677

Pure Go implementation of the WebRTC API

12,243

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.

12,785

Simple peer-to-peer with WebRTC.

14,287

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:

  1. Download the latest release from the GitHub repository.
  2. Extract the files to a directory on your server.
  3. Create a configuration file named screego.config.yml in the same directory:
server:
  address: :5050
  secret: <your-secret-here>
  1. Run the server:
./screego serve
  1. 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

14,677

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.

12,243

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.

12,785

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
14,287

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

screego/server

screen sharing for developers

Build Status Build Status Go Report Card Docker Pulls latest release

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.