Как использовать .to JSON () для ледяного кандидата в webrt c is javascript? - PullRequest
1 голос
/ 03 мая 2020

В Javascript я пытаюсь отправить ледовых кандидатов через веб-сокеты (json).

Я начал с этого образца .

До этого Я использую candid.to JSON () и / или JSON .stringify (), кандидат выглядит примерно так:

address: "192.168.1.2"
candidate: "candidate:149645548 1 udp 1685987071 192.168.1.2 50697 typ srflx raddr 192.168.8.162 rport 50697 generation 0 ufrag o8rk network-id 1 network-cost 10"
component: "rtp"
foundation: "149645548"
port: 50697
priority: 1685987071
protocol: "udp"
relatedAddress: "192.168.8.162"
relatedPort: 50697
sdpMLineIndex: 1
sdpMid: "1"
tcpType: ""
type: "srflx"
usernameFragment: "o8rk"
__proto__: RTCIceCandidate

После того, как я использую .to JSON, как рекомендуется здесь , это выглядит так:

candidate: "candidate:149645548 1 udp 1685987071 192.168.1.2 50697 typ srflx raddr 192.168.8.162 rport 50697 generation 0 ufrag o8rk network-id 1 network-cost 10"
sdpMLineIndex: 1
sdpMid: "1"
__proto__: Object

Как видите, многие свойства отсутствуют. Кроме того, когда я пытаюсь запустить "toString ()", как предполагает та же ссылка, этот метод не существует. Когда я пытаюсь JSON .parse, я получаю «Неожиданный токен в JSON в позиции 1»

Я думаю, проблема в том, что у него есть proto или из-за его тип? Но я, кажется, не могу пойти дальше, чем это.

Любая помощь, чтобы jsonify это и отправить его будет оценена.

1 Ответ

1 голос
/ 03 мая 2020

Это намеренно, см. спец. c. Дополнительные свойства уже закодированы в строке-кандидате, поэтому, если вы сделаете это на удаленном конце:

new RTCIceCandidate({candidate: "candidate:149645548 1 udp 1685987071 192.168.1.2 50697 typ srflx raddr 192.168.8.162 rport 50697 generation 0 ufrag o8rk network-id 1 network-cost 10", sdpMid: 0})

, свойства будут восстановлены.

...