go-webrtc

WebRTC for Go

Github星跟踪图

go-webrtc

Build Status

WebRTC for Golang.

Current Status:

This repository is currently fluctuating a lot, and the exposed interfaces will
change. Do not rely on anything in here yet!

  • A PeerConnection can be successfully established between two separate machines
    using this Go library.
  • It is possible to exchange bytes over a real DTLS/SCTP datachannel. (See the
    chat demo)
  • Video/Audio support from the Media API is not implemented as it's low priority
    for us -- but pull requests will be gladly taken!

There is still lots of work to do!

Usage

To immediately see some action, try the chat demo from two machines (or one...)

  • git clone https://github.com/keroserene/go-webrtc
  • 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 "github.com/keroserene/go-webrtc/"

And then you can do things like webrtc.NewPeerConnection(...).

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 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.

Dependencies:

  • GCC 5+
  • TODO:

Package naming

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 webrtc wouldn't make sense either.
  • Also you can rename imported packages to whatever you like.

(e.g. import "foo" "github.com/keroserene/go-webrtc")

Building

Latest tested native webrtc archive: 88f5d9180eae78a6162cccd78850ff416eb82483

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 webrtc.org native-code dev.

The easy way is to use the pre-built archive I've provided in lib/.

Once the archive is ready, cgo takes care of everything, and building
is as easy as go build or 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)

主要指标

概览
名称与所有者keroserene/go-webrtc
主编程语言Go
编程语言Shell (语言数: 4)
平台
许可证Other
所有者活动
创建于2015-10-01 12:42:53
推送于2020-03-12 19:37:26
最后一次提交2020-02-23 23:07:15
发布数0
用户参与
星数455
关注者数30
派生数71
提交数277
已启用问题?
问题数65
打开的问题数16
拉请求数26
打开的拉请求数4
关闭的拉请求数14
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?