Rumah > Artikel > pembangunan bahagian belakang > Pelayan python WebRTC: pelayan STUN/TURN untuk apl python anda
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
Pelaksanaan ular sawa tulen:
Dibina pada asyncio :
Media dan saluran data:
Kemudahan Penyepaduan:
Dokumentasi dan contoh yang luas:
Python 3.x Dipasang:
python3 --version
Pengetahuan Asas pengaturcaraan async:
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
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
Di sini kita akan membuat objek RTCPeerConnection untuk mengurus sambungan dan strim media
Contoh kod pelayan (Sambungan Rakan Sebaya)
pip install aiortc aiohttp
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:
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
Kemudian klik pada butang Arahan untuk mendapatkan tatasusunan pelayan ICE anda.
Anda juga boleh menggunakan kekunci api untuk mendayakan pelayan TURN
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)
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
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?
Menggunakan asyncio untuk pengurusan konkurensi
Amalan terbaik pengurusan strim media
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.
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
Pelayan di semua Wilayah di dunia: Toronto, Miami, San Francisco, Amsterdam, London, Frankfurt, Bangalore, Singapura, Sydney, Seoul, Dallas, New York
Kependaman Rendah: kurang daripada 50 ms kependaman, di mana-mana sahaja di seluruh dunia.
Kos Efektif: harga bayar semasa anda pergi dengan lebar jalur dan diskaun volum tersedia.
Pentadbiran Mudah: Dapatkan log penggunaan, e-mel apabila akaun mencapai had ambang, rekod pengebilan dan sokongan e-mel serta telefon.
Mematuhi Piawaian: Mematuhi RFC 5389, 5769, 5780, 5766, 6062, 6156, 5245, 5768, 6336, 69244, TLS dan TLS DTLS.
Berbilang‑Penyewaan: Buat berbilang bukti kelayakan dan asingkan penggunaan mengikut pelanggan atau apl yang berbeza. Dapatkan log Penggunaan, rekod pengebilan dan makluman ambang.
Kebolehpercayaan Perusahaan: 99.999% Masa Operasi dengan SLA.
Skala Perusahaan: Tanpa had pada trafik serentak atau jumlah trafik. Pelayan TURN Bermeter menyediakan Kebolehskalaan Perusahaan
5 GB/bln Percuma: Dapatkan 5 GB penggunaan pelayan TURN percuma setiap bulan dengan Pelan Percuma
Berjalan pada port 80 dan 443
Sokongan MENGUBAH SSL untuk membenarkan sambungan melalui tembok api pemeriksaan paket dalam.
Menyokong kedua-dua TCP dan UDP
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!