Serwer TURN dla Delphi
Uruchom własny serwer TURN (RFC 8656) w Delphi. Alokuj przekazywane adresy transportowe dla klientów, którzy nie mogą nawiązać ścieżki peer-to-peer, z poświadczeniami long-term i limitami przypadającymi na alokację.
Uruchom własny serwer TURN (RFC 8656) w Delphi. Alokuj przekazywane adresy transportowe dla klientów, którzy nie mogą nawiązać ścieżki peer-to-peer, z poświadczeniami long-term i limitami przypadającymi na alokację.
Samohostowany serwer TURN — przetwarza Allocate / CreatePermission / ChannelBind / Send / Refresh / Data, zarządza alokacjami i ich czasem życia, waliduje poświadczenia long-term.
TsgcTURNServer
Windows, macOS, Linux, iOS, Android
Enterprise
Ustaw Port oraz realm w TURNOptions.Authentication.LongTermCredentials, dostarcz hasła poszczególnych użytkowników przez OnSTUNRequestAuthorization, Active := True — Twój serwer alokuje teraz relaye dla każdego klienta zgodnego z RFC 8656.
uses
sgcP2P, sgcP2P_STUN_Classes;
// TFormTURNServer zawiera FServer: TsgcTURNServer oraz handler
procedure TFormTURNServer.StartServer;
begin
FServer := TsgcTURNServer.Create(nil);
FServer.Port := 3478;
FServer.TURNOptions.Authentication.Enabled := True;
FServer.TURNOptions.Authentication.LongTermCredentials.Enabled := True;
FServer.TURNOptions.Authentication.LongTermCredentials.Realm :=
'turn.example.com';
// ogranicz nadużycia: alokacje na użytkownika i maksymalny czas życia
FServer.TURNOptions.Allocation.MaxUserAllocations := 4;
FServer.TURNOptions.Allocation.MaxLifeTime := 3600;
FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;
FServer.Active := True;
end;
procedure TFormTURNServer.OnSTUNRequestAuthorization(Sender: TObject;
const aRequest: TsgcSTUN_Message;
const aUsername, aRealm: string;
var Password: string);
begin
// zwróć hasło tego użytkownika, puste odrzuca żądanie
Password := LookupPassword(aUsername);
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcTURNServer *Server = new TsgcTURNServer(this);
Server->Port = 3478;
Server->TURNOptions->Authentication->Enabled = true;
Server->TURNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->TURNOptions->Authentication->LongTermCredentials->Realm = "turn.example.com";
Server->TURNOptions->Allocation->MaxUserAllocations = 4;
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;
Samohostowany relay — pozwala Twoim wdrożeniom WebRTC i ICE uniezależnić się od zewnętrznych dostawców TURN.
Obsługuje żądania Allocate z REQUESTED-TRANSPORT, wybiera wolny port relayu i śledzi czas życia. Refresh przedłuża alokację; serwer demontuje ją po wygaśnięciu.
Śledzi uprawnienia peerów dla poszczególnych alokacji i bindowanie kanałów. Odrzuca ramki Send/Data dla peerów, którzy nie otrzymali uprawnień zgodnie z RFC 8656 §9.
Obsługiwane są zarówno 36-bajtowe koperty Send / Data, jak i 4-bajtowe ramki ChannelData. Relay przekazuje datagramy między relayed-transport-address a powiązanym peerem.
TURNOptions.Authentication.LongTermCredentials przechowuje realm, a OnSTUNRequestAuthorization udostępnia Ci nazwę użytkownika i ten realm, abyś zwrócił hasło. Serwer sam waliduje MESSAGE-INTEGRITY i rotuje nonces.
TURNOptions.Allocation.MaxUserAllocations ogranicza liczbę relayów przypadających na jednego użytkownika, DefaultLifeTime i MaxLifeTime ograniczają czas życia każdego z nich, a MinPort / MaxPort / RelayIP ustalają zakres relayu. Użytkownik przekraczający limit otrzymuje 486 Allocation Quota Reached.
OnTURNBeforeAllocate udostępnia adres żądającego wraz z parametrem var Reject, a OnTURNBeforeRelayIndication i OnTURNBeforeRelayChannelData robią to samo dla każdego przekazywanego datagramu. OnTURNCreateAllocation i OnTURNDeleteAllocation pozwalają śledzić te alokacje, które są aktywne.
Przejdź bezpośrednio do dokumentacji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.
| Pomoc online — TsgcTURNServer Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu. | Otwórz | |
| Projekt demonstracyjny — Demos\35.P2P\03.TURN Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej. | Otwórz | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent. | Otwórz | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Otwórz |
Częste pytania o uruchamianie własnego przekaźnika TURN w Delphi i C++ Builder.
TsgcTURNServer, ustaw Port i Realm, dostarcz hasła dla poszczególnych użytkowników ze zdarzenia OnSTUNRequestAuthorization, a następnie ustaw Active := True. Serwer obsługuje wtedy Allocate, CreatePermission, ChannelBind, Send, Refresh i Data dla dowolnego klienta RFC 8656, przekazując datagramy między przekazywanym adresem transportowym a powiązanym peerem.TsgcTURNServer to własny przekaźnik, który osadzasz we własnej aplikacji Delphi lub C++ Builder, więc Twoje wdrożenia WebRTC i ICE mogą przestać zależeć od zewnętrznych dostawców TURN lub osobnej instalacji coturn. Limity dla poszczególnych alokacji (maksymalna liczba alokacji na użytkownika, przepustowość i czas życia) ograniczają nadużycia, a OnQuotaExceeded raportuje odrzucenia.