WebRTC for Go
WebRTC for Golang.
As of October 2019, this repository is not actively maintained. The project for which it was developed is now using pion/webrtc instead.
To immediately see some action, try the chat demo from two machines (or one...)
git clone https://github.com/keroserene/go-webrtc
go run demo/chat/chat.go
Type "start" in one of the Peers, and copy the session descriptions. (This is the "copy-paste" signalling channel). If ICE negotiation succeeds, a really janky chat session should begin.
To write Go code which requires WebRTC functionality:
import "github.com/keroserene/go-webrtc/"And then you can do things like
demo/*for real usage examples which show how to prepare a PeerConnection and set up the necessary callbacks and signaling.
Also, here are the GoDocs.
The package name is
webrtc, even though the repo name is
go-webrtc. (This may be slightly contrary to Go convention, unless we consider the suffix to really begin at the last dash. Reasons: - Dashes aren't allowed in package names - Including the word "go" in a Go package name seems redundant - Just calling this repo
webrtcwouldn't make sense either. - Also you can rename imported packages to whatever you like.
import "foo" "github.com/keroserene/go-webrtc")
Latest tested native webrtc archive:
There are currently two ways to build gowebrtc: the easy way, and the hard way.
The hard way is to build from scratch, which involves Google's depot_tools and chromium stuff, gclient syncing, which takes a couple hours, and possibly many more if you run into problems... along with writing a custom ninja file and concatenating archives correctly and such.
The easy way is to use the pre-built archive I've provided in
Once the archive is ready, cgo takes care of everything, and building is as easy as
TODO(keroserene): More information / provide a real build script to automate the hard way so it becomes the easy way. (See Issue #23)