Need help with go-webrtc?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

429 Stars 64 Forks Other 277 Commits 21 Opened issues


WebRTC for Go

Services available


Need anything else?

Contributors list

No Data


Build Status

WebRTC for Golang.

Current Status:

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
  • cd 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 ""
And then you can do things like

If you've never used WebRTC before, there is already plenty of information online along with javascript examples, but for the Go code here, take a look within

for real usage examples which show how to prepare a PeerConnection and set up the necessary callbacks and signaling.

Also, here are the GoDocs.


  • GCC 5+
  • TODO:

Package naming

The package name is

, even though the repo name is
. (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
wouldn't make sense either. - Also you can rename imported packages to whatever you like.


import "foo" ""


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.

See native-code dev.

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

go build
go install

TODO(keroserene): More information / provide a real build script to automate the hard way so it becomes the easy way. (See Issue #23)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.