Rumah >pembangunan bahagian belakang >Tutorial Python >Pelayan python WebRTC: pelayan STUN/TURN untuk apl python anda

Pelayan python WebRTC: pelayan STUN/TURN untuk apl python anda

Linda Hamilton
Linda Hamiltonasal
2024-11-18 00:09:021014semak imbas

Python ialah bahasa pengaturcaraan yang serba boleh dan boleh diakses yang terkenal dengan sintaks dan kebolehbacaannya yang jelas

Ini menjadikannya pilihan yang baik untuk membina aplikasi webrtc 

Kami boleh membina pelayan WebRTC dalam python dengan menggunakan perpustakaan seperti aiortc

perpustakaan aorta

  • Pelaksanaan ular sawa tulen: 

    • Perpustakaan aiortc  ialah pelaksanaan ular sawa tulen bagi WebRTC dan ORTC.
    • Ini bermakna anda tidak perlu bergantung pada mana-mana perpustakaan pihak ketiga atau mana-mana tanggungan lain
  • Dibina pada asyncio : 

    • Aiortc dibina di atas pustaka asyncio milik python sendiri untuk sambungan async. 
    • Oleh itu membolehkan anda mengendalikan berbilang sambungan serentak dengan mudah
  • Media dan saluran data:

    • Perpustakaan menyediakan sokongan untuk Video, audio serta saluran data, sekali gus membolehkan pelbagai ciri komunikasi masa nyata.
  • Kemudahan Penyepaduan:

    • aiortc boleh disepadukan dengan mudah dengan perpustakaan python lain seperti aiohttp untuk pelayan web serta perpustakaan pihak ketiga lain seperti socket.io untuk pengendalian acara masa nyata
  • Dokumentasi dan contoh yang luas:

    • pustaka aiortc didatangkan dengan dokumentasi yang luas dan contoh berbeza yang boleh membantu anda bermula dengan cepat 

Menyediakan Pelayan WebRTC dalam Python

Pra-syarat

  1. Python 3.x Dipasang:

    1. Pastikan anda telah memasang Python 3.x pada komputer atau pelayan anda. Anda boleh menyemak versi python seperti itu  
python3 --version
  1. Pengetahuan Asas pengaturcaraan async:

    1. Anda memerlukan pengetahuan asas tentang cara pengaturcaraan tak segerak berfungsi. 
    2. Kami akan menggunakan perpustakaan async dalam artikel ini yang penting untuk sambungan serentak dan strim data

Memasang perpustakaan yang diperlukan 

menggunakan pip untuk memasang aiortc dan kebergantungan lain 

aiortc ialah pelaksanaan python tulen bagi webrtcand ORTC. Ia menggunakan ciri async bahasa python untuk mengendalikan komunikasi masa nyata

Pasang perpustakaan menggunakan pip seperti itu

pip install aiortc aiohttp
  • aiorrtc menyediakan kefungsian WebRTC teras

  • aiohttp ialah rangka kerja klien/pelayan HTTP tak segerak, kami akan menggunakan rangka kerja ini untuk memberi isyarat

Membangunkan pelayan

WebRTC python server: STUN/TURN servers for your python app

Menyediakan isyarat dengan WebSockets

  1. Menyediakan isyarat dengan WebSockets

WebRTC memerlukan mekanisme isyarat untuk mewujudkan sambungan. 

WebRTC melakukan ini dengan menukar SDP atau penerangan sesi dan calon ICE antara rakan sebaya

Untuk ini, anda boleh menggunakan apa sahaja. Dalam artikel ini kita akan menggunakan WebSockets untuk komunikasi dua arah masa nyata antara klien dan pelayan

Persediaan isyarat ( Kod pelayan)

python3 --version
  1. Mengendalikan Sambungan Rakan Sebaya dan strim Media

Di sini kita akan membuat objek RTCPeerConnection untuk mengurus sambungan dan strim media

Contoh kod pelayan (Sambungan Rakan Sebaya)

pip install aiortc aiohttp

WebRTC python server: STUN/TURN servers for your python app

  1. Menggabungkan pelayan TURN ke dalam konfigurasi ICE 

Untuk mengendalikan traversal NAT dan memastikan ketersambungan, kami memerlukan pelayan TURN.

Dalam artikel ini kita akan menggunakan pelayan Metered TURN. Metered ialah penyedia Global pelayan TURN 

Anda boleh mendaftar untuk mendapatkan pelan percuma pada pelayan Metered TURN yang menawarkan kuota pelayan TURN 50 GB bulanan dan terdapat pelan berbayar juga tersedia 

Langkah:

  • Dapatkan Tauliah

Daftar di Metered.ca/stun-turn dan dapatkan bukti kelayakan TURN anda 

Pada Papan Pemuka, klik pada butang Klik di sini untuk menjana bukti kelayakan pertama anda untuk mencipta bukti kelayakan pelayan TURN baharu

WebRTC python server: STUN/TURN servers for your python app

Kemudian klik pada butang Arahan untuk mendapatkan tatasusunan pelayan ICE anda.

WebRTC python server: STUN/TURN servers for your python app

Anda juga boleh menggunakan kekunci api untuk mendayakan pelayan TURN

  • Konfigurasikan pelayan ICE
import asyncio
from aiohttp import web
import json

async def index(request):
    with open('index.html', 'r') as f:
        content = f.read()
    return web.Response(text=content, content_type='text/html')

async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)
    # Handle incoming WebSocket messages here
    return ws

app = web.Application()
app.router.add_get('/', index)
app.router.add_get('/ws', websocket_handler)

web.run_app(app)
  1. Contoh Kod yang menggambarkan rentetan Kunci

Berikut ialah cara kami boleh menyepadukan segala-galanya di sini

from aiortc import RTCPeerConnection, RTCSessionDescription

pcs = set()  # Keep track of peer connections

async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    pc = RTCPeerConnection()
    pcs.add(pc)

    @pc.on("datachannel")
    def on_datachannel(channel):
        @channel.on("message")
        async def on_message(message):
            # Handle incoming messages
            pass

    async for msg in ws:
        if msg.type == web.WSMsgType.TEXT:
            data = json.loads(msg.data)

            if data["type"] == "offer":
                await pc.setRemoteDescription(RTCSessionDescription(
                    sdp=data["sdp"], type=data["type"]))
                answer = await pc.createAnswer()
                await pc.setLocalDescription(answer)
                await ws.send_json({
                    "type": pc.localDescription.type,
                    "sdp": pc.localDescription.sdp
                })

            elif data["type"] == "candidate":
                candidate = data["candidate"]
                await pc.addIceCandidate(candidate)
        elif msg.type == web.WSMsgType.ERROR:
            print(f'WebSocket connection closed with exception {ws.exception()}')

    pcs.discard(pc)
    return ws

Petua Pelaksanaan Praktikal

Pertimbangan Rangkaian

  1. Menguruskan traversal NAT dengan Metered.ca STUN/TURN Servers
  • Pelayan STUN: Ini membantu peranti klien yang berada di belakang NAT mengetahui alamat IP dan nombor port mereka sendiri. Untuk mengetahui lebih lanjut tentang pelayan STUN pergi ke Stun Server: Apakah itu Session Traversal Utilities for NAT?

  • TURN Pelayan: TURN pelayan menyampaikan trafik dari rakan ke per apabila komunikasi langsung tidak dapat dilakukan disebabkan oleh peraturan NAT atau firewall. Untuk mengetahui lebih lanjut tentang pelayan TURN pergi ke: Apakah pelayan TURN?

  1. Memastikan Sambungan Dipercayai dan Kependaman Rendah
  • Penghalaan Geografi Automatik: Metered.ca mempunyai penghalaan geografi automatik 

Pengoptimuman Prestasi 

  1. Menggunakan asyncio untuk pengurusan konkurensi

  2. Amalan terbaik pengurusan strim media

WebRTC python server: STUN/TURN servers for your python app

  1. API: HIDUPKAN pengurusan pelayan dengan API berkuasa. Anda boleh melakukan perkara seperti Tambah/Alih keluar bukti kelayakan melalui API, Dapatkan Setiap Pengguna / Bukti kelayakan dan metrik Pengguna melalui API, Dayakan/ Lumpuhkan bukti kelayakan melalui API, Dapatkan semula data Penggunaan mengikut tarikh melalui API.

  2. Penyasaran Geo-Lokasi Global: Menghalakan trafik ke pelayan terdekat secara automatik, untuk kependaman serendah mungkin dan prestasi kualiti tertinggi. kependaman kurang daripada 50 ms di mana-mana sahaja di seluruh dunia

  3. Pelayan di semua Wilayah di dunia: Toronto, Miami, San Francisco, Amsterdam, London, Frankfurt, Bangalore, Singapura, Sydney, Seoul, Dallas, New York

  4. Kependaman Rendah: kurang daripada 50 ms kependaman, di mana-mana sahaja di seluruh dunia.

  5. Kos Efektif: harga bayar semasa anda pergi dengan lebar jalur dan diskaun volum tersedia.

  6. Pentadbiran Mudah: Dapatkan log penggunaan, e-mel apabila akaun mencapai had ambang, rekod pengebilan dan sokongan e-mel serta telefon.

  7. Mematuhi Piawaian: Mematuhi RFC 5389, 5769, 5780, 5766, 6062, 6156, 5245, 5768, 6336, 69244, TLS dan TLS DTLS.

  8. Berbilang‑Penyewaan: Buat berbilang bukti kelayakan dan asingkan penggunaan mengikut pelanggan atau apl yang berbeza. Dapatkan log Penggunaan, rekod pengebilan dan makluman ambang.

  9. Kebolehpercayaan Perusahaan: 99.999% Masa Operasi dengan SLA.

  10. Skala Perusahaan: Tanpa had pada trafik serentak atau jumlah trafik. Pelayan TURN Bermeter menyediakan Kebolehskalaan Perusahaan

  11. 5 GB/bln Percuma: Dapatkan 5 GB penggunaan pelayan TURN percuma setiap bulan dengan Pelan Percuma

  12. Berjalan pada port 80 dan 443

  13. Sokongan MENGUBAH SSL untuk membenarkan sambungan melalui tembok api pemeriksaan paket dalam.

  14. Menyokong kedua-dua TCP dan UDP

  15. STUN Tanpa Had Percuma

Atas ialah kandungan terperinci Pelayan python WebRTC: pelayan STUN/TURN untuk apl python anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn