2025-02-07 15:59:03 -05:00
2025-02-07 15:59:03 -05:00
2025-02-06 22:50:09 -05:00
2025-02-06 22:50:09 -05:00
2025-02-07 15:25:50 -05:00
2025-02-07 15:25:50 -05:00
2025-02-07 15:25:50 -05:00
2025-02-07 15:25:50 -05:00

go-webrtc-net

Go library providing standard Go network interfaces (net.Conn, net.PacketConn, net.Listener) over WebRTC connections.

Installation

go get github.com/go-i2p/go-webrtc-net

Features

  • Standard Go network interfaces over WebRTC
  • Support for both reliable (TCP-like) and unreliable (UDP-like) modes
  • Thread-safe implementation
  • Context-aware connection management
  • Built on pure Go WebRTC implementation (pion/webrtc)

Usage

// Create a WebRTC connection
conn, err := webrtc.DialConn(underlying, "remote-peer-address")
if err != nil {
    log.Fatal(err)
}
defer conn.Close()

// Use it like a regular net.Conn
_, err = conn.Write([]byte("Hello WebRTC!"))
// Create a WebRTC listener
listener, err := webrtc.Listen(tcpListener)
if err != nil {
    log.Fatal(err)
}
defer listener.Close()

// Accept connections
conn, err := listener.Accept()
// Create a WebRTC packet connection
pconn, err := webrtc.DialPacketConn(underlying, "remote-peer-address")
if err != nil {
    log.Fatal(err)
}
defer pconn.Close()

Testing

go test ./...

License

MIT License

Contributing

  1. Fork the repository
  2. Create your feature branch
  3. Submit a pull request
Description
WebRTC wrappers for net.Conn, net.Listener, and net.PacketConn that accept nested listeners, for WebTorrent-over-I2P in go-i2p-bt but useful in other places.
Readme 136 KiB
Languages
Go 100%