Как изменить ice4j LocalCandidate
Я использую libjitsi / ice4j в своем серверном приложении и хотел бы изменить свои локальные кандидаты, прежде чем я вызову Agent.startConnectivityEstablishment (), есть ли способ изменить приоритет или любое другое свойство, чтобы принудительно установить приоритеты одного кандидата над другим? Например, я в конечном итоге с этими местными кандидатами:
default candidate: candidate:1 1 udp 2130706431 192.168.122.15 5000 typ host
candidate:1 1 udp 2130706431 192.168.122.15 5000 typ host
candidate:2 1 udp 1694498815 24.234.1.1 5000 typ srflx raddr 192.168.122.15 rport 5000
Мне нужно, чтобы кандидат srflx выбирался среди кандидатов на хост, так как он использует адрес частной сети и не может быть доступен из-за пределов сети.
Обе библиотеки плохо документированы, и, похоже, не хватает мутаторов для рассматриваемых объектов, поэтому любая помощь будет принята с благодарностью.
1 ответ
Считаете ли вы, что srflx используется вместо хоста? Я могу только представить, что ICE4J выберет хост, если это возможно. Я заметил, что мой проверяет и дает сбой на хосте, иначе он выбирает его. Я могу проверить еще раз, хотя.
Вы можете проверить это руководство, чтобы увидеть, помогает ли оно: http://stellarbuild.com/blog/article/ice4j-networking-tutorial-part-1
По правде говоря, это будет легче изменить, если вы используете SDP, потому что тогда вы можете вручную попробовать несколько приемов сравнения строк, но это рискованно. Возможно, обе локальные сети используют 192.168.1.*, Но находятся в разных сетях. Таким образом, предполагая, что srflx одинаковы и строки локального хоста запускаются одинаково, вы можете удалить srflx и заставить его попробовать хост.
Я дважды проверю, но я думаю, что он автоматически отдает приоритет хосту.