应用程序: 我正在开发允许对等点相互连接的应用程序,我使用 mediasoup 和 WebRTC (SFU)。
问题: 一切都在本地运行,但是当部署到 VPS(我使用 Vultr)时,对等点无法连接。在 VPS 防火墙上,端口对 mediasoup 中声明的范围(tcp 和 udp)开放。
我在 stackoverflow 上问了几个问题,但不幸的是没有一个有帮助:
我使用metered.ca,我在客户端传递配置:
producerTransportRef.current = deviceRef.current.createSendTransport({
...params,
iceServers: [
{
urls: 'stun:stun.relay.metered.ca:80',
},
{
urls: 'turn:a.relay.metered.ca:80',
username: 'XXX',
credential: 'YYY',
},
{
urls: 'turn:a.relay.metered.ca:80?transport=tcp',
username: 'XXX',
credential: 'YYY',
},
{
urls: 'turn:a.relay.metered.ca:443',
username: 'XXX',
credential: 'YYY',
},
{
urls: 'turn:a.relay.metered.ca:443?transport=tcp',
username: 'XXX',
credential: 'YYY',
},
],
});
参数来自定义 mediasoup 传输的服务器,并传递到前端,并与 TURN 服务器配置合并:
let transport = await router.createWebRtcTransport(webRtcTransport_options);
callback({
// https://mediasoup.org/documentation/v3/mediasoup-client/api/#TransportOptions
params: {
id: transport.id,
iceParameters: transport.iceParameters,
iceCandidates: transport.iceCandidates,
dtlsParameters: transport.dtlsParameters,
},
});
当我打印从服务器获得的iceCandidate时,有我的服务器IP地址
当我在 chrome 中运行 webrtc-internals 时,我得到:
我按照错误代码操作:
701 错误代码 - 如果没有候选主机可以到达服务器,则 errorCode 将设置为值 701,该值超出了 STUN 错误代码范围。
我注意到候选主机位于我的本地网络中(不确定这是否是问题所在)
我非常感谢有关下一步检查内容的建议