我正在寻找一种实现客户端到客户端通信的方法,而不会让对等方知道彼此的IP地址。对于已经支持该协议的客户来说,将WebRTC与TURN一起使用(查看coturn)将是理想的选择。但请阅读它所说的TURN specification:
客户端必须包含XOR-PEER-ADDRESS属性和DATA属性。 XOR-PEER-ADDRESS属性包含要将数据发送到的对等方的传输地址。
因此协议似乎要求拥有对等IP。最理想的是,这个属性可以是一个提供的(匿名)密钥,我可以映射到路由表中TURN服务器上的IP。更新路由表将由信令服务器处理。
是否有支持此功能的东西,或者我应该自己编写客户端和TURN功能?在我的情况下,所有流量当然都将通过TURN服务器进行路由。
答案 0 :(得分:1)
用户coTURN并将iceTransportPolicy
选项设置为relay
(deafult为all
),然后peerConnection将仅生成relay candidates(TURN)
。
因此媒体只会通过TURN服务器流动
并且同行不会知道远程用户IP(Reflex / Host)。
将peerConnection创建为fllowing
var iceServers = [{"urls":["turn:TURN_IP:3478?transport=udp"],"username":"TURN_USERNAME","credential":"TURN_PASWD"}];
var config = {"iceServers": iceServers, "iceTransportPolicy": "relay"};
var constraints = [{"DtlsSrtpKeyAgreement": true}];
pc = new RTCPeerConnection(config, constraints);