mirror of
https://github.com/pion/webrtc.git
synced 2025-12-24 11:51:03 +08:00
Fixes #515 This includes a few small and closely related changes: 1. All occurrences of the build tag `+build js` have been changed to the more precise `+build js,wasm`. This will exclude the files from being included by third-party compilers like GopherJS, with which they are incompatible. 2. Some files which are incompatible with JavaScript/Wasm now have the correct build tag (`+build -js`) so they will be excluded from Wasm builds. 3. Some configuration options which are incompatible with JavaScript/Wasm (or at least the current bindings) will now no longer appear in Wasm builds. This meant creating new files with new struct definitions and the appropriate build tags.
64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
// +build js,wasm
|
|
|
|
package webrtc
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/pions/webrtc/internal/ice"
|
|
)
|
|
|
|
// ICEServer describes a single STUN and TURN server that can be used by
|
|
// the ICEAgent to establish a connection with a peer.
|
|
type ICEServer struct {
|
|
URLs []string
|
|
Username string
|
|
// Note: Credential and CredentialType are not supported.
|
|
// Credential interface{}
|
|
// CredentialType ICECredentialType
|
|
}
|
|
|
|
func (s ICEServer) parseURL(i int) (*ice.URL, error) {
|
|
return ice.ParseURL(s.URLs[i])
|
|
}
|
|
|
|
func (s ICEServer) validate() ([]*ice.URL, error) {
|
|
urls := []*ice.URL{}
|
|
|
|
for i := range s.URLs {
|
|
url, err := s.parseURL(i)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if url.Scheme == ice.SchemeTypeTURN || url.Scheme == ice.SchemeTypeTURNS {
|
|
// // https://www.w3.org/TR/webrtc/#set-the-configuration (step #11.3.2)
|
|
// if s.Username == "" || s.Credential == nil {
|
|
// return nil, &rtcerr.InvalidAccessError{Err: ErrNoTurnCredencials}
|
|
// }
|
|
|
|
// switch s.CredentialType {
|
|
// case ICECredentialTypePassword:
|
|
// // https://www.w3.org/TR/webrtc/#set-the-configuration (step #11.3.3)
|
|
// if _, ok := s.Credential.(string); !ok {
|
|
// return nil, &rtcerr.InvalidAccessError{Err: ErrTurnCredencials}
|
|
// }
|
|
|
|
// case ICECredentialTypeOauth:
|
|
// // https://www.w3.org/TR/webrtc/#set-the-configuration (step #11.3.4)
|
|
// if _, ok := s.Credential.(OAuthCredential); !ok {
|
|
// return nil, &rtcerr.InvalidAccessError{Err: ErrTurnCredencials}
|
|
// }
|
|
|
|
// default:
|
|
// return nil, &rtcerr.InvalidAccessError{Err: ErrTurnCredencials}
|
|
// }
|
|
return nil, errors.New("TURN is not currently supported in the JavaScript/Wasm bindings")
|
|
}
|
|
|
|
urls = append(urls, url)
|
|
}
|
|
|
|
return urls, nil
|
|
}
|