
Partager:
Rafay is a Senior Software Engineer at Vonage, working on the Video Media team within the API Engineering department. He focuses on building and maintaining the mission-critical infrastructure that powers real-time video communication at scale, from session lifecycle management and signalling protocols to AI-powered integrations and developer tooling.
Fin de vie du relais chinois : créez votre propre relais grâce à la Video API Vonage
Temps de lecture : 10 minutes
Remarque : Ce guide s'adresse aux clients de la Video API de Vonage qui utilisaient auparavant China Relay, ainsi qu'à tout client souhaitant proposer ses services à des utilisateurs en Chine continentale.
Contexte
Si la fin de vie de China Relay marque une transition, elle ouvre également la voie à une solution plus avantageuse : la pleine propriété et le contrôle total de votre infrastructure de relais. Plutôt que de dépendre d’un service géré par un tiers, vous pouvez désormais mettre en place une solution qui vous appartient entièrement, vous offrant une visibilité directe sur votre niveau de conformité et la flexibilité nécessaire pour vous adapter à l’évolution des exigences légales et réglementaires chinoises. Ce guide vous explique en détail comment y parvenir à l’aide des fonctionnalités de la plateforme Vonage Video API.
La fonctionnalité « China Relay » de Vonage fournissait une infrastructure de relais gérée, hébergée en Chine continentale (région AWS de Pékin), afin d’aider les clients à desservir leurs utilisateurs finaux à l’intérieur des frontières du réseau chinois. Elle se composait de trois éléments : une couche de géolocalisation Lambda@Edge, un proxy WebSocket pour la signalisation API et un serveur TURN (Traversal Using Relays around NAT) pour le relais multimédia. Ces trois éléments étaient déployés au sein d’AWS Chine et exploités sous le nexmoproxy.cn .
Le produit « China Relay » a atteint sa fin de vie au deuxième trimestre 2026 et a été définitivement retiré de la vente.
Cet article explique comment les clients de la Video API Vonage peuvent légalement mettre en place et exploiter une solution de relais équivalente en utilisant les fonctionnalités de la plateforme Vonage, notamment « Configurable TURN » et « IP Proxy », associées à votre propre infrastructure hébergée en Chine.
Pourquoi vous avez besoin d'une configuration spécifique pour la Chine
Comprendre les exigences chinoises vous permet de garder le contrôle. Voici ce que vous devez savoir pour offrir à vos utilisateurs une expérience de haute qualité et parfaitement conforme :
Tous les services accessibles depuis Internet doivent disposer d'une licence de fournisseur de services de communication Internet (ICP) en cours de validité.
Le trafic à destination et en provenance des infrastructures cloud internationales est soumis à un filtrage très strict par le « Grand Firewall », ce qui entraîne une perte de paquets importante et une latence élevée pour les flux multimédias WebRTC.
Il est illégal d'acheminer le trafic des utilisateurs chinois via des serveurs étrangers sans disposer des licences nécessaires.
La signalisation WebRTC standard (connexions WebSocket vers les serveurs API de Vonage) et les flux multimédias (relais TURN) seront tous deux concernés et devront être acheminés via un proxy local hébergé en Chine. Veuillez noter que le proxy sert de relais local afin d’améliorer l’accessibilité. Le trafic de signalisation continuera toutefois à quitter la Chine pour atteindre l'infrastructure mondiale de Vonage, et il n'y a aucune garantie de terminaison locale.
La bonne nouvelle : la Video API fournit les fonctionnalités de base nécessaires pour vous permettre de posséder et de contrôler vous-même cette infrastructure, vous offrant ainsi une transparence totale, une grande flexibilité et l'assurance d'une conformité à long terme.
L'architecture de remplacement
Au lieu de recourir aux serveurs relais gérés par Vonage en Chine, vous pouvez mettre en place votre propre infrastructure de relais à l'aide des composants suivants :
Composant | Fonctionnalités | Qui le fournit ? |
TURN configurable | Configure le SDK Video Vonage pour qu'il utilise vos propres serveurs TURN hébergés en Chine, plutôt que le parc mondial de serveurs TURN de Vonage. | Fonctionnalité API complémentaire de Vonage |
Proxy IP | Achemine tout le trafic de signalisation de la Video API Vonage, y compris les appels API, les connexions WebSocket et la journalisation, via votre serveur proxy situé en Chine. | Fonctionnalité API complémentaire de Vonage |
Infrastructure cloud chinoise | Héberge votre serveur TURN et votre proxy en Chine, ce qui permet de maintenir le trafic dans les limites réglementaires. | Vous, qui utilisez un fournisseur tel qu'Alibaba Cloud, Tencent Cloud ou Huawei Cloud |
Licence ICP | Exigé par la législation chinoise pour pouvoir exploiter légalement tout service accessible via Internet en Chine continentale. | Vous, délivré par les autorités chinoises compétentes |
Remarque : TURN configurable et le proxy IP sont deux fonctionnalités supplémentaires qui doivent être activées sur votre compte Vonage. Contactez votre conseiller Vonage pour les faire activer.
Guide étape par étape
Étape 1 : Obtenir une licence ICP
Avant toute chose, vous devez obtenir la ou les autorisations requises délivrées par le gouvernement chinois :
Enregistrement ICP (备案 / Beian) : Obligatoire pour les sites web et les applications accessibles depuis la Chine. Généralement obtenu par l'intermédiaire de votre fournisseur de services cloud chinois.
Licence ICP (许可证) : Obligatoire pour les services Internet à valeur ajoutée, notamment les communications en temps réel. Il s'agit de la licence que Vonage n'a pas pu obtenir ni conserver pour China Relay.
Important : Seules les entités disposant d’une entité juridique chinoise ou d’un partenaire local agréé peuvent obtenir une licence ICP. Nous vous recommandons vivement de faire appel à un partenaire juridique local connaissant bien la législation chinoise en matière de télécommunications.
⚠ Sans licence ICP valide, l'exploitation d'un serveur relais ou d'un serveur proxy en Chine n'est pas conforme à la législation.
Étape 2 : Configurer votre serveur TURN en Chine
Déployez un serveur TURN chez le fournisseur de cloud chinois de votre choix en suivant les étapes suivantes :
Choisissez un fournisseur de services cloud disposant de centres de données situés en Chine continentale (par exemple, Alibaba Cloud, Tencent Cloud ou Huawei Cloud).
Déployez un serveur TURN. Le serveur open source coturn est une solution largement utilisée et bénéficiant d'un bon support technique.
Assurez-vous que votre serveur dispose d'une adresse IP publique stable en Chine et d'un nom de domaine enregistré sous votre licence ICP.
Configurez votre serveur TURN en indiquant les identifiants appropriés et en définissant les paramètres de sécurité adéquats (l'utilisation du protocole TLS est vivement recommandée).
Votre serveur TURN devra disposer des ports suivants ouverts :
UDP/TCP 3478 (TURN standard)
TCP 443 (TURN sur TLS, recommandé pour la compatibilité avec le « Great Firewall »)
Astuce : Testez l'accessibilité de votre serveur TURN depuis plusieurs FAI chinois (China Telecom, China Unicom et China Mobile), car les performances et l'accessibilité peuvent varier considérablement d'un fournisseur à l'autre.
Étape 3 : Configurer la Video API Vonage avec TURN configurable
La fonctionnalité TURN configurable de Vonage vous permet de remplacer l'affectation par défaut du serveur TURN pour les sessions et les connexions, en orientant le SDK côté client vers vos propres serveurs TURN en Chine plutôt que vers le parc mondial de Vonage.
Remarque : La fonctionnalité TURN configurable est configurée dans les SDK clients, et non dans les SDK serveurs. Les exemples ci-dessous couvrent toutes les plateformes clientes prises en charge.
Transmettez la configuration suivante lors de l'initialisation d'une session dans votre Client SDK Vonage Video côté client. Remplacez YOUR_TURN_SERVER_HOSTNAME, YOUR_TURN_USERNAME, et YOUR_TURN_CREDENTIAL par les valeurs issues de la configuration de votre serveur TURN.
JavaScript (OpenTok.js)
const session = OT.initSession(API_KEY, SESSION_ID, {
iceConfig: {
includeServers: 'custom',
transportPolicy: 'relay',
customServers: [
{
urls: ['turns:YOUR_TURN_SERVER_HOSTNAME:443?transport=tcp'],
username: 'YOUR_TURN_USERNAME',
credential: 'YOUR_TURN_CREDENTIAL'
}
]
}
}); SDK Android
List<IceServer> serverList = new IceServer(
"turns:YOUR_TURN_SERVER_HOSTNAME:443?transport=tcp", // TURN server URL
"YOUR_TURN_USERNAME", // Username
"YOUR_TURN_CREDENTIAL" // Credential
);
mSession = new Session.Builder(this, API_KEY, SESSION_ID)
.setCustomIceServers(serverList, IncludeServers.Custom)
.setIceRouting(TransportPolicy.TURN)
.build();
mSession.setSessionListener(this);
mSession.connect(token); SDK iOS
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.includeServers = OTSessionICEIncludeServersCustom;
myICEServerConfiguration.transportPolicy = OTSessionICETransportForceTurn;
NSError *error = nil;
[myICEServerConfiguration addICEServerWithURL:@"turns:YOUR_TURN_SERVER_HOSTNAME:443?transport=tcp"
userName:@"YOUR_TURN_USERNAME"
credential:@"YOUR_TURN_CREDENTIAL"
error:&error];
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.iceConfig = myICEServerConfiguration;
_session = [[OTSession alloc] initWithApiKey:kApiKey
sessionId:kSessionId
delegate:self
settings:settings]; SDK Windows
List<IceServer> iceServers = new List<IceServer>() {
new IceServer(
"turns:YOUR_TURN_SERVER_HOSTNAME:443?transport=tcp", "YOUR_TURN_USERNAME", "YOUR_TURN_CREDENTIAL"
)
};
IceConfig iceConfig = new IceConfig(
iceServers,
ICETransport.Relayed,
ICEIncludeServers.Custom
);
session = new Session.Builder(context, API_KEY, SESSION_ID){
IceConfig = iceConfig
}.Build(); SDK pour Linux / macOS
// Provide the ICE configuration here.
struct otc_custom_ice_config ice_config;
ice_config.num_ice_servers = 1;
ice_config.ice_url = (char **)malloc(sizeof(char *) * ice_config.num_ice_servers);
ice_config.ice_url[0] = strdup("turns:YOUR_TURN_SERVER_HOSTNAME:443?transport=tcp");
ice_config.ice_user = (char **)malloc(sizeof(char *) * ice_config.num_ice_servers);
ice_config.ice_user[0] = strdup("YOUR_TURN_USERNAME");
ice_config.ice_credential = (char **)malloc(sizeof(char *) * ice_config.num_ice_servers);
ice_config.ice_credential[0] = strdup("YOUR_TURN_CREDENTIAL");
ice_config.force_turn = OTC_TRUE;
ice_config.use_custom_turn_only = OTC_TRUE;
otc_session_settings *session_settings = otc_session_settings_new();
if (session_settings != NULL) {
otc_session_settings_set_custom_ice_config(session_settings, &ice_config);
}
otc_session *session = otc_session_new_with_settings(API_KEY,
SESSION_ID,
&session_callbacks,
session_settings);
if (session == NULL) {
printf("Could not create session successfully");
return EXIT_FAILURE;
}
otc_session_connect(session, TOKEN); SDK React Native
<OTSession
applicationId="your-application-id"
sessionId="your-session-id"
token="your-session-token"
options={{
iceConfig: {
includeServers: 'custom',
transportPolicy: 'relay',
customServers: [
{
urls: [
'turns:YOUR_TURN_SERVER_HOSTNAME:443?transport=tcp'
],
username: 'YOUR_TURN_USERNAME',
credential: 'YOUR_TURN_CREDENTIAL'
}
]
}
}}
>
<OTPublisher/>
<OTSubscriber/>
</OTSession> Consultez la documentation relative à la fonctionnalité TURN configurable de la Video API Vonage pour obtenir des informations complètes spécifiques à chaque plateforme.
Étape 4 : Acheminement du trafic de signalisation API via un proxy IP
Par défaut, les clients de la Video API de Vonage se connectent à l'infrastructure mondiale de signalisation de Vonage (appels API, connexions WebSocket et trafic de journalisation), qui peut être bloquée ou fortement limitée par le pare-feu chinois.
Utilisez un proxy IP pour acheminer tout le trafic de signalisation non multimédia via un serveur que vous contrôlez en Chine.
Remarque : Le proxy IP achemine tout le trafic, à l'exception des flux multimédias. Les flux multimédias sont gérés séparément par le TURN configurable (étape 3). Ces deux fonctionnalités sont nécessaires pour une configuration complète conforme aux exigences chinoises.
Suivez ces étapes pour configurer votre proxy IP :
Déployez un proxy inverse HTTP/WebSocket sur votre infrastructure cloud chinoise. Celui-ci peut fonctionner sur le même hôte que votre serveur TURN ou sur un hôte distinct.
Un proxy inverse léger suffit. Voir l' exemple d'implémentation de serveur proxy à titre de référence.
Sécurisez votre proxy afin qu'il ne soit accessible qu'aux clients Vonage autorisés (règles de pare-feu, authentification par jeton).
Configurez le SDK Vonage Video pour qu'il utilise votre proxy pour tous les appels API et toutes les connexions WebSocket à l'aide des extraits de code spécifiques à chaque plateforme ci-dessous.
Remplacez YOUR_CHINA_PROXY_URL dans chaque extrait par l'URL de votre serveur proxy déployé.
JavaScript (OpenTok.js)
Appelez ce numéro avant d'essayer toute autre méthode proposée par Vonage.
// Must be called before any other Vonage methods
OT.setProxyUrl('YOUR_CHINA_PROXY_URL'); SDK Android
Indiquez l'URL du proxy lors de la création de votre session.
mSession = new Session.Builder(context, API_KEY, SESSION_ID)
.setProxyUrl("YOUR_CHINA_PROXY_URL")
.build(); SDK iOS
Définissez l'URL du proxy dans votre objet de paramètres de session.
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.proxyURL = @"YOUR_CHINA_PROXY_URL";
session = [[OTSession alloc] initWithApiKey:kApiKey
sessionId:kSessionId
delegate:self
settings:settings]; SDK Windows
Configurez l'URL du proxy dans le générateur de session.
Session = new Session.Builder(Context.Instance, API_KEY, SESSION_ID) {
ProxyUrl = "YOUR_CHINA_PROXY_URL"
}.Build(); SDK pour Linux / macOS
Configurez l'URL du proxy dans les paramètres de session.
otc_session_settings_set_proxy_url(session_settings, "YOUR_CHINA_PROXY_URL");
otc_session *session = otc_session_new_with_settings(API_KEY, SESSION_ID,
&session_callbacks, session_settings); SDK React Native
Transmettez l'URL du proxy via la propriété « options » de la session.
<OTSession
apiKey="your-api-key"
sessionId="your-session-id"
token="your-session-token"
options={{
proxyUrl: 'YOUR_CHINA_PROXY_URL',
}}
>
<OTPublisher/>
<OTSubscriber/>
</OTSession> Consultez la documentation relative au proxy IP de la Video API Vonage pour obtenir tous les détails de configuration.
Étape 5 : Testez votre configuration
Avant la mise en production, vérifiez votre configuration de bout en bout à l'aide de la liste de contrôle suivante :
Verify que tous les flux multimédias transitent bien par votre serveur TURN à l'aide des statistiques WebRTC (consultez
candidateType === "relay").
Vérifiez que le trafic de signalisation transite bien par votre proxy IP en surveillant les journaux du serveur proxy.
Surveillez les journaux du serveur TURN pour détecter toute activité liée à l'authentification et au relais.
Effectuez des tests auprès de différents FAI (China Telecom, China Unicom et China Mobile), car les performances peuvent varier considérablement.
Testez à la fois sur les clients mobiles (iOS/Android) et sur les clients de bureau (Web).
Résumé
Avec la fin de China Relay, vous avez désormais la possibilité de mettre en place une solution de relais entièrement autogérée et conforme, qui vous offre un contrôle total sur votre infrastructure et vous permet de rester en avance sur l'évolution du cadre réglementaire chinois. La solution consiste à exploiter votre propre relais TURN et votre propre proxy de signalisation sur une infrastructure cloud chinoise, en utilisant les fonctionnalités « Configurable TURN » et « IP Proxy » de Vonage pour les connecter à la Video API de Vonage.
Ce qu'a fait China Relay | Ce que vous devez faire maintenant |
Vonage exploitait des serveurs TURN en Chine | Vous déployez TURN sur Alibaba Cloud, Tencent Cloud ou une plateforme similaire |
Routage par relais géré par Vonage | Vous configurez la Video API Vonage avec votre point de terminaison TURN via « Configurable TURN » |
Routage de la signalisation via l'API gérée par Vonage | Vous déployez un proxy IP et configurez le SDK |
Vonage détenait la licence ICP (tentative) | Vous obtenez votre propre licence ICP |
Vonage gérait le nom de domaine (nexmoproxy.cn) | Vous enregistrez et gérez vous-même votre domaine .cn |
Une fois que votre serveur TURN et votre proxy IP seront opérationnels, vous disposerez d'une solution de relais entièrement conforme et autogérée pour vos utilisateurs en Chine continentale.
Ressources
Vous avez une question ou souhaitez partager ce que vous construisez ?
S'abonner à la Bulletin d'information du développeur
Suivez-nous sur X (anciennement Twitter) pour les mises à jour
Regardez les tutoriels sur notre chaîne YouTube
Connectez-vous avec nous sur la page Vonage Developer sur LinkedIn
Aidez-nous à améliorer l'expérience des développeurs en remplissant notre formulaire de commentaires « Voice of the Developer »
Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.
Partager:
Rafay is a Senior Software Engineer at Vonage, working on the Video Media team within the API Engineering department. He focuses on building and maintaining the mission-critical infrastructure that powers real-time video communication at scale, from session lifecycle management and signalling protocols to AI-powered integrations and developer tooling.