Skip to content

docs: Creating a UDP socket in the browser is possible #3349

Open
@guest271314

Description

@guest271314

Describe the bug

Re https://www.iroh.computer/docs/wasm-browser-support

This is because we can't port our hole-punching logic in iroh to browsers: They don't support sending UDP packets to IP addresses from inside the browser sandbox.
That is not technically true and correct.

WICG Direct Sockets is implemented in Chromium-based browsers in an Isolated Web App. A UDP can be created in the browser with UDPSocket interface https://wicg.github.io/direct-sockets/#udpsocket-interface.

E.g.,

var s = new UDPSocket({remotePort:7, remoteAddress:"185.215.195.137"});
s.closed.then(console.log).catch(console.error);
var {readable, writable} = await s.opened;
readable.pipeTo(
  new WritableStream({
    write({data}) {
      console.log(decoder.decode(data));
    },
    close() {
      console.log("close");
    }
  })
).catch(console.log);
var encoder = new TextEncoder();
var decoder = new TextDecoder();
var writer = writable.getWriter();

var message = (m) => {
  return {data: encoder.encode(m) }
};

await writer.ready;
await writer.write(message(`UDP socket in the browser on ${location.protocol} in ${navigator.userAgent}`));

Relevant Logs

Expected behavior
Update documentation to reflect what is technically possible in the browser re UDP sockets.

Platform(s)
Desktop:

  • OS: Linux (Debian)
  • Browser: Version 139.0.7227.0 (Developer Build) (64-bit)

Smartphone:

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Version [e.g. 22]

Additional Context / Screenshots / GIFs

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions