20 comments

  • thrdbndndn3 days ago
    Did a quick test on Demo site. It works like a charm.<p>One issue: when I stopped sharing, my audience (my another computer) can still see my shared screen (I assume the last frame), what I think it shouldn&#x27;t. And there is no indication or whatsoever that I have stopped sharing.
    • tonghohin3 days ago
      Thanks for the feedback! I’ll check out the issue. It still has a lot to improve!
  • karhuton3 days ago
    Tried making one that would work on almost any device:<p><a href="https:&#x2F;&#x2F;bluescreen.live" rel="nofollow">https:&#x2F;&#x2F;bluescreen.live</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;karhuton&#x2F;bluescreen">https:&#x2F;&#x2F;github.com&#x2F;karhuton&#x2F;bluescreen</a><p>Runs on Hetzner EU currently.<p>Maybe I should open source it.
  • atmanactive3 days ago
    Great! Thanks.<p>While we&#x27;re on the subject of WebRTC, if anyone would need MIDI over WebRTC, here is my take on it:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;AtmanActive&#x2F;webmidi-rtc-transport">https:&#x2F;&#x2F;github.com&#x2F;AtmanActive&#x2F;webmidi-rtc-transport</a>
    • Ylpertnodi3 days ago
      Perfect timing! Seems to suit (some of) my needs, thanks. And +1 for mentioning sonobus - that&#x27;s a lot of fun, too.
    • ghusbands3 days ago
      Browser-based screen sharing is the subject. Is it normal to advertise unrelated projects in HN comments?
      • atmanactive2 days ago
        I don&#x27;t know. Is it?<p>The afore mentioned webapp is based on WebRTC so, not totally unrelated.<p>I have nothing to advertise as I have nothing to gain from this. I just wanted to offer additional solution for people that might find it useful.<p>Also, judging by the other comments, it seems that someone did find it useful.<p>Furthermore, reading through other comments on this thread, there are a lot of other WebRTC projects mentions anyway, and many of them have nothing to do with screen sharing.
  • hobo_mark2 days ago
    Similar tool I like and used to self-host for personal use: <a href="https:&#x2F;&#x2F;screego.net&#x2F;#&#x2F;" rel="nofollow">https:&#x2F;&#x2F;screego.net&#x2F;#&#x2F;</a>
  • mvkel3 days ago
    What I love about developing with cursor et al is it forces devs to keep the app simple.<p>No custom UI bloat when shadcn will do; no feature creep when the outline is fulfilled.<p>Simple apps &lt; 30,000 LOC means cursor can keep the code base in the context window, so its generations stay high quality.
  • tonghohin18 hours ago
    Just deployed a new feature, audio can also be shared now! But it&#x27;s only supported in Chrome and Edge, and users must select the option to share a tab. It won&#x27;t work for sharing a window or whole screen.
  • low_tech_love3 days ago
    Slightly off-topic, but I’ve been searching for a long time for something like this, but for text chat: go to a website; create a room; share a code&#x2F;link with others; people join and chat; then at some point in the future the room simply disappears (you can save a log if you want). Ideally anonymous with the best possible cryptographic implementation.<p>Has anyone stumbled upon something similar? I hate having to register and login to every chat platform, especially bloated ones like Discord and Slack. The closest one to what I want is gitter but it requires a GitHub signin.
    • jckahn3 days ago
      I built exactly what you’re describing: <a href="https:&#x2F;&#x2F;chitchatter.im&#x2F;" rel="nofollow">https:&#x2F;&#x2F;chitchatter.im&#x2F;</a><p>It’s decentralized, serverless, anonymous, private, ephemeral, and open source.
      • low_tech_love2 days ago
        Looks great, will try!
        • jckahn2 days ago
          Awesome, thanks for checking it out! Let me know what you think. :)
    • jeroenhd3 days ago
      I think <a href="https:&#x2F;&#x2F;call.element.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;call.element.io&#x2F;</a> works like that. Calls are encrypted and the client includes screen sharing and all the standard video conferencing features.<p>Jitsi Meet is also a classic example of this, though these days it requires at least one logged-in &quot;moderator&quot; user to work.
    • tasoeur3 days ago
      Something like this? <a href="https:&#x2F;&#x2F;offrecord.ca&#x2F;#lobby" rel="nofollow">https:&#x2F;&#x2F;offrecord.ca&#x2F;#lobby</a>
    • akshayKMR3 days ago
      Mine is a work in progress, but chat should work just fine. Let me know if you have any questions&#x2F;concerns.<p><a href="https:&#x2F;&#x2F;oorja.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;oorja.io&#x2F;</a><p>click create space -&gt; choose proceed as anonymous -&gt; In your space, use chat or other apps. It&#x27;s end to end encrypted (using the hash-frag in url as key, AES-128 bit GCM)
    • brennopost3 days ago
      You could easily build one using Yjs [1]. I&#x27;m using it for my work together website [2] (it has a chat).<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;yjs&#x2F;yjs">https:&#x2F;&#x2F;github.com&#x2F;yjs&#x2F;yjs</a><p>[2] <a href="https:&#x2F;&#x2F;juntos.pages.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;juntos.pages.dev&#x2F;</a>
    • moonandstars2 days ago
      The reason why this doesn&#x27;t usually exist is because anonymous text sharing is almost immediately taken over by people using it to do crimes. So be aware of that.
    • croisillon3 days ago
      Jitsi Meet?
    • cess113 days ago
      Do some Phoenix tutorials and you have your own.
  • chuanliang3 days ago
    Nice work.<p>Similar to <a href="https:&#x2F;&#x2F;pin.gl&#x2F;" rel="nofollow">https:&#x2F;&#x2F;pin.gl&#x2F;</a>
  • anduc11 hours ago
    wow, I didn&#x27;t know this was possible
  • sgrodnik3 days ago
    I&#x27;m not sure, but is it possible to make it work on Android? I&#x27;ve tried on my pixel 7a, it gave me the code, I pasted it in another device in Safari, but it was only Loading... on the button.
    • tonghohin2 days ago
      Yeah, it&#x27;s not working that well on phones right now, working on it...
  • mandeepj3 days ago
    Gave it a quick run! Works great. The notification to share your screen goes away quickly. Is there any way to get back to it? I generated a new code to fire the notification again.
    • tonghohin2 days ago
      I just fixed that, the share button should stay forever now until you click it.
  • IshKebab3 days ago
    If you can get remote <i>control</i> to work that would be amazing. I assume that&#x27;s impossible with current browser APIs though. A real pain point of Google Meet.
    • atoav3 days ago
      I too yearn for the day where my parents webbrowser can run Win+R and delete their System32 directory after they clicked &quot;Ok&quot; on a prompt whose message they wouldn&#x27;t be able to tell me if I paid them a billion Euros for it.
      • IshKebab2 days ago
        It can already do that. The prompt just says &quot;Click here to download&quot;.
        • atoav2 days ago
          So you say we need a easily accessible RCE-API to make this even simpler?
          • IshKebab2 days ago
            I will ignore your dumb reductionist take...<p>The problem with doing it via downloads or plugins is that it&#x27;s OS and maybe browser specific (have fun making your plugin for Firefox on Windows, Chrome on Mac, etc.), and also it&#x27;s extra friction.<p>The reason I want to remote control someone&#x27;s computer is because talking them through the actions is too tedious. The last thing I want to do is talk them through downloading and installing some browser plugin first.<p>Security &amp; scamming is obviously a concern but let&#x27;s not pretend it is impossible to solve. People thought the full screen API shouldn&#x27;t be done because of security concerns, but that&#x27;s laughable now.<p>As an initial step they could at least support showing a &quot;laser pointer&quot; on other people&#x27;s screens so you can say &quot;click here&quot; instead of &quot;up a bit, no... go back.. no third from the bottom, yeah that one&quot;. That has zero security implications.
            • atoav2 days ago
              My &#x27;dumb reductionist take&#x27; is me trying to tease out (with a little bit of humor) how you imagine this absolute security <i>nightmare</i> to be implemented in a way that wouldn&#x27;t result in abuse of apocalyptic proportions. I mean maybe you had something ingenious in mind here, but then I&#x27;d like to hear it in detail instead of handweaving and arguing &quot;there are other bad things so let&#x27;s make it worse by 10 magnitudes&quot;.<p>So now without the humor: How would you design the system to prevent abuse, remote code execution and such? Because if that part isn&#x27;t clear that idea should probably be shelved.
              • IshKebab2 days ago
                I would probably do it the same way any other dangerous operations are protected: make people type confirmation in (e.g. how you delete repos on GitHub), require you to manually add websites to a whitelist (e.g. how screen sharing for apps already works on Mac, or how some permissions work on Android). You can use heuristics to provide a more onerous confirmation for suspicious sites, exactly how running executables works on Windows.<p>Other security measures you could do:<p>1. Throttle events to the speed that a human could do them, so you can&#x27;t instantly open a terminal and paste code in.<p>2. Require additional confirmation to sent events to specific applications, like the terminal, or explorer or whatever.<p>3. Only allow control of apps that are already open. That would be better than nothing.<p>There are probably other things I haven&#x27;t thought of.<p>Anyway the point is the danger is only two clicks away already. This isn&#x27;t a risk that isn&#x27;t already there, it just makes the tech less annoying.
                • atoav1 day ago
                  Thank you, that sounds somewhat reasonable, but I am still not entirely convinced that the added attack surface is really worth it..
  • yroc923 days ago
    Does this share your screen across domains? If so, how?
    • tonghohin2 days ago
      No, it doesn&#x27;t share across domains.
  • 5evOX5hTZ9mYa9E3 days ago
    Doesn&#x27;t work on Linux?
    • tonghohin2 days ago
      It should work, is it not working for you?
  • 1oooqooq3 days ago
    why the source have an accordion and carousel component? :)
    • ddtaylor3 days ago
      Are you talking about in components&#x2F;ui? If so that&#x27;s ShadCN and it works by fetching components and copy&#x2F;pasting them into your project rather than trying to continue to keep the components up to date.
    • tonghohin3 days ago
      don&#x27;t know why Bolt.new downloaded all the shadcn components for me lol
  • reynaldi3 days ago
    Awesome demo! Are you paying for the TURN server?
    • tonghohin2 days ago
      No, it&#x27;s not using TURN server now.
      • deathanatos2 days ago
        &gt; <i>No, it&#x27;s not using TURN server now.</i><p>You state it uses PeerJS. And indeed, the code calls from PeerJS,<p><pre><code> const peer = new Peer(); </code></pre> (<a href="https:&#x2F;&#x2F;github.com&#x2F;tonghohin&#x2F;screen-sharing&#x2F;blob&#x2F;18f6ab93716cf5bdec57625b91c6620cc84c173b&#x2F;app&#x2F;join&#x2F;page.tsx#L33">https:&#x2F;&#x2F;github.com&#x2F;tonghohin&#x2F;screen-sharing&#x2F;blob&#x2F;18f6ab93716...</a>)<p>I.e., it constructs a PeerJS Peer without manually specifying PeerOptions. That class, in turn, states,<p><pre><code> &#x2F;** * Configuration hash passed to RTCPeerConnection. * This hash contains any custom ICE&#x2F;TURN server configuration. * * Defaults to {@apilink util.defaultConfig} *&#x2F; config?: any; </code></pre> Since we&#x27;re not overriding it, we take the default. And `defaultConfig` leads us to: <a href="https:&#x2F;&#x2F;github.com&#x2F;peers&#x2F;peerjs&#x2F;blob&#x2F;c073252f879b57757f8a82d40302bbe06a3890e0&#x2F;lib&#x2F;util.ts#L38-L51">https:&#x2F;&#x2F;github.com&#x2F;peers&#x2F;peerjs&#x2F;blob&#x2F;c073252f879b57757f8a82d...</a> which lists STUN &amp; TURN servers.<p>… so it sure looks to me like it is using a TURN server…
        • tonghohin2 days ago
          Sorry for the misleading wording, I was trying to say that I&#x27;m not paying for any TURN servers. You are totally right, PeerJS is still using TURN server under the hood. Thanks for pointing that out!
  • lopkeny12ko3 days ago
    Immediately upon loading the homepage:<p>&gt; Application error: a client-side exception has occurred (see the browser console for more information).
    • tonghohin2 days ago
      I guess you visited the page right after a new deployment. This happens sometimes due to a version mismatch in Next.js after deployment. Refreshing the page should fix it!
  • antback2 days ago
    It works great!! I Like it!
  • humptybumpty3 days ago
    -
    • kapitanjakc3 days ago
      For mobile I find google meet the best, I think even Whatsapp is now allowing to screen share.
  • shivamrishi1 day ago
    [dead]