แพ็คเกจ stun
ใช้ยูทิลิตี้ทราเวิร์ดสำหรับโปรโตคอล NAT (Stun) (RFC 5389) และไคลเอนต์ที่ไม่มีการพึ่งพาภายนอกและการจัดสรรเป็นศูนย์ในเส้นทางร้อน ไคลเอนต์รองรับการส่งคำขออัตโนมัติ
คุณสามารถรับที่อยู่ IP ปัจจุบันของคุณจากเซิร์ฟเวอร์ STAN ใด ๆ โดยส่งคำขอที่มีผลผูกพัน ดูตัวอย่างเพิ่มเติมที่ cmd/stun-client
package main
import (
"fmt"
"github.com/pion/stun"
)
func main () {
// Parse a STUN URI
u , err := stun . ParseURI ( "stun:stun.l.google.com:19302" )
if err != nil {
panic ( err )
}
// Creating a "connection" to STUN server.
c , err := stun . DialURI ( u , & stun. DialConfig {})
if err != nil {
panic ( err )
}
// Building binding request with random transaction id.
message := stun . MustBuild ( stun . TransactionID , stun . BindingRequest )
// Sending request to STUN server, waiting for response message.
if err := c . Do ( message , func ( res stun. Event ) {
if res . Error != nil {
panic ( res . Error )
}
// Decoding XOR-MAPPED-ADDRESS attribute from message.
var xorAddr stun. XORMappedAddress
if err := xorAddr . GetFrom ( res . Message ); err != nil {
panic ( err )
}
fmt . Println ( "your IP is" , xorAddr . IP )
}); err != nil {
panic ( err )
}
}
RFC 5389 ล้าสมัย RFC 3489 ดังนั้นการใช้งานจึงถูกละเว้นโดยวัตถุประสงค์อย่างไรก็ตาม RFC 3489 สามารถนำไปใช้งานได้ง่ายเป็นแพ็คเกจแยกต่างหาก
ปัจจุบันแพ็คเกจมีเสถียรภาพไม่คาดว่าจะมีการเปลี่ยนแปลงที่เข้ากันไม่ได้ย้อนหลังยกเว้นข้อบกพร่องที่สำคัญหรือการแก้ไขความปลอดภัย
แอตทริบิวต์เพิ่มเติมไม่น่าจะถูกนำไปใช้ในขอบเขตของแพ็คเกจ STAN ยกเว้นเพียงค่าคงที่สำหรับแอตทริบิวต์หรือประเภทข้อความ
GO 1.12 ได้รับการสนับสนุนและทดสอบใน CI
พฤติกรรมของลูกค้าได้รับการทดสอบและตรวจสอบในหลาย ๆ ด้าน:
api
ดูโครงการ TeamCity และไดเรกทอรี e2e
สำหรับข้อมูลเพิ่มเติม นอกจากนี้ยังมีไฟล์ wireshark .pcap
สำหรับการทดสอบ E2E ในสิ่งประดิษฐ์สำหรับการสร้าง
Intel (R) Core (TM) i7-8700K:
version: 1.22.2
goos: linux
goarch: amd64
pkg: github.com/pion/stun
PASS
benchmark iter time/iter throughput bytes alloc allocs
--------- ---- --------- ---------- ----------- ------
BenchmarkMappedAddress_AddTo-12 32489450 38.30 ns/op 0 B/op 0 allocs/op
BenchmarkAlternateServer_AddTo-12 31230991 39.00 ns/op 0 B/op 0 allocs/op
BenchmarkAgent_GC-12 431390 2918.00 ns/op 0 B/op 0 allocs/op
BenchmarkAgent_Process-12 35901940 36.20 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_GetNotFound-12 242004358 5.19 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_Get-12 230520343 5.21 ns/op 0 B/op 0 allocs/op
BenchmarkClient_Do-12 1282231 943.00 ns/op 0 B/op 0 allocs/op
BenchmarkErrorCode_AddTo-12 16318916 75.50 ns/op 0 B/op 0 allocs/op
BenchmarkErrorCodeAttribute_AddTo-12 21584140 54.80 ns/op 0 B/op 0 allocs/op
BenchmarkErrorCodeAttribute_GetFrom-12 100000000 11.10 ns/op 0 B/op 0 allocs/op
BenchmarkFingerprint_AddTo-12 19368768 64.00 ns/op 687.81 MB/s 0 B/op 0 allocs/op
BenchmarkFingerprint_Check-12 24167007 49.10 ns/op 1057.99 MB/s 0 B/op 0 allocs/op
BenchmarkBuildOverhead/Build-12 5486252 224.00 ns/op 0 B/op 0 allocs/op
BenchmarkBuildOverhead/BuildNonPointer-12 2496544 517.00 ns/op 100 B/op 4 allocs/op
BenchmarkBuildOverhead/Raw-12 6652118 181.00 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_ForEach-12 28254212 35.90 ns/op 0 B/op 0 allocs/op
BenchmarkMessageIntegrity_AddTo-12 1000000 1179.00 ns/op 16.96 MB/s 0 B/op 0 allocs/op
BenchmarkMessageIntegrity_Check-12 975954 1219.00 ns/op 26.24 MB/s 0 B/op 0 allocs/op
BenchmarkMessage_Write-12 41040598 30.40 ns/op 922.13 MB/s 0 B/op 0 allocs/op
BenchmarkMessageType_Value-12 1000000000 0.53 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_WriteTo-12 94942935 11.30 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_ReadFrom-12 43437718 29.30 ns/op 682.87 MB/s 0 B/op 0 allocs/op
BenchmarkMessage_ReadBytes-12 74693397 15.90 ns/op 1257.42 MB/s 0 B/op 0 allocs/op
BenchmarkIsMessage-12 1000000000 1.20 ns/op 16653.64 MB/s 0 B/op 0 allocs/op
BenchmarkMessage_NewTransactionID-12 521121 2450.00 ns/op 0 B/op 0 allocs/op
BenchmarkMessageFull-12 5389495 221.00 ns/op 0 B/op 0 allocs/op
BenchmarkMessageFullHardcore-12 12715876 94.40 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_WriteHeader-12 100000000 11.60 ns/op 0 B/op 0 allocs/op
BenchmarkMessage_CloneTo-12 30199020 41.80 ns/op 1626.66 MB/s 0 B/op 0 allocs/op
BenchmarkMessage_AddTo-12 415257625 2.97 ns/op 0 B/op 0 allocs/op
BenchmarkDecode-12 49573747 23.60 ns/op 0 B/op 0 allocs/op
BenchmarkUsername_AddTo-12 56282674 22.50 ns/op 0 B/op 0 allocs/op
BenchmarkUsername_GetFrom-12 100000000 10.10 ns/op 0 B/op 0 allocs/op
BenchmarkNonce_AddTo-12 39419097 35.80 ns/op 0 B/op 0 allocs/op
BenchmarkNonce_AddTo_BadLength-12 196291666 6.04 ns/op 0 B/op 0 allocs/op
BenchmarkNonce_GetFrom-12 120857732 9.93 ns/op 0 B/op 0 allocs/op
BenchmarkUnknownAttributes/AddTo-12 28881430 37.20 ns/op 0 B/op 0 allocs/op
BenchmarkUnknownAttributes/GetFrom-12 64907534 19.80 ns/op 0 B/op 0 allocs/op
BenchmarkXOR-12 32868506 32.20 ns/op 31836.66 MB/s
BenchmarkXORSafe-12 5185776 234.00 ns/op 4378.74 MB/s
BenchmarkXORFast-12 30975679 32.50 ns/op 31525.28 MB/s
BenchmarkXORMappedAddress_AddTo-12 21518028 54.50 ns/op 0 B/op 0 allocs/op
BenchmarkXORMappedAddress_GetFrom-12 35597667 34.40 ns/op 0 B/op 0 allocs/op
ok github.com/pion/stun 60.973s
ห้องสมุดถูกใช้เป็นส่วนหนึ่งของการใช้งาน WEBRTC ของเรา โปรดดูแผนงานนั้นเพื่อติดตามเหตุการณ์สำคัญที่สำคัญของเรา
Pion มีชุมชนที่กระตือรือร้นในการหย่อน
ติดตาม Pion Twitter สำหรับการอัปเดตโครงการและข่าว WebRTC ที่สำคัญ
เรามักจะต้องการสนับสนุน โครงการของคุณ โปรดติดต่อถ้าคุณมีอะไรที่จะสร้าง! หากคุณต้องการการสนับสนุนเชิงพาณิชย์หรือไม่ต้องการใช้วิธีการสาธารณะคุณสามารถติดต่อเราได้ที่ [email protected]
ตรวจสอบวิกิที่มีส่วนร่วมเพื่อเข้าร่วมกลุ่มคนที่น่าทึ่งทำให้โครงการนี้เป็นไปได้
ใบอนุญาต MIT - ดูใบอนุญาตสำหรับข้อความเต็ม