Comments (13)
Hi,
Setting a STUN server won't have any impact on TCP candidates, you should always get direct TCP candidates.
It's not normal that you can't get TURN-TCP candidates, libnice should support it, at least according to the documentation. What TURN server have you tried with? Does it have TCP support enabled?
from libdatachannel.
I am using coturn server & yes TCP enabled.
from libdatachannel.
It might be a libnice issue then. I'll do some tests on my side.
from libdatachannel.
@murat-dogan Do you get TCP relay candidates on this test page?
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
from libdatachannel.
No all of them is UDP.
It is strange.
from libdatachannel.
I opened an issue at libnice for that.
There is another ICE implementation library called pjsip,
It is clearly written that they support Turn TCP connection at here.
https://trac.pjsip.org/repos/wiki/get-around-nat-blocked-traffic-filtering
I don't know exact situation for libnice.
from libdatachannel.
OK, for reference: https://gitlab.freedesktop.org/libnice/libnice/issues/97
PJNATH (the ICE tools part from PJSIP) looks good and feature-complete, however it's under GPL, which means integrating it would require changing the license from LGPL to GPL.
from libdatachannel.
Did you have any time to investigate for this subject?
What do you think , Is libnice support this feature?
For PJSIP;
I compiled their iceserver
sample located in pjsip-apps/bin/samples/x86_64-unknown-linux-gnu
.
Tried to get Turn Relay TCP Candidates, but could not.
I changed turn server & tried again, but got same result.
I am stuck.
I think I am missing something basic but could not figured out yet.
from libdatachannel.
Yes, since it didn't work I dug up a bit.
It appears RFC 5766, the original TURN specification, only considers TCP and TLS/TCP as a way to contact a TURN server. Data relayed between peers is always over TCP (see https://tools.ietf.org/html/rfc5766#section-2.1), and the extension for TURN TCP relaying between peers seems to have stayed an abandoned draft which doesn't seem to be widely implemented: https://tools.ietf.org/html/draft-ietf-behave-turn-tcp-07
The only use case where WebRTC officially supports ICE TCP is browser-to-server with active TCP candidates on browser side, browser-to-browser (and therefore browser-to-browser via relay) are not supported.
Sadly for your use case, this means TURN TCP relay candidates might not be supported in a lot of situations. Anyway, you could get the same result with secure websockets with far less useless overhead, couldn't you?
from libdatachannel.
TCP relay candidates seem to be implemented in coturn, so what's missing here is more precisely TCP relay support in libnice. However, for browser support I think it'd be another story entirely.
from libdatachannel.
Yes, since it didn't work I dug up a bit.
It appears RFC 5766, the original TURN specification, only considers TCP and TLS/TCP as a way to contact a TURN server. Data relayed between peers is always over TCP (see https://tools.ietf.org/html/rfc5766#section-2.1), and the extension for TURN TCP relaying between peers seems to have stayed an abandoned draft which doesn't seem to be widely implemented: https://tools.ietf.org/html/draft-ietf-behave-turn-tcp-07
The only use case where WebRTC officially supports ICE TCP is browser-to-server with active TCP candidates on browser side, browser-to-browser (and therefore browser-to-browser via relay) are not supported.
Sadly for your use case, this means TURN TCP relay candidates might not be supported in a lot of situations. Anyway, you could get the same result with secure websockets with far less useless overhead, couldn't you?
Thanks for comments. I will investigate another way. Maybe websocket.
from libdatachannel.
You can close the issue
from libdatachannel.
OK ! I think websockets are especially interesting if you combine signaling and relaying over the same connection.
from libdatachannel.
Related Issues (20)
- AV1-related functions are not defined in CAPI
- High pliCount when running from AWS
- Does the argument binary_ptr message of AV1RtpPacketizer::packetizeObu expect a single obu unit? HOT 3
- Often, MediaTrack cannot start as intended: Consent expired for candidate pair HOT 4
- Unable to Connect to TLS when Using MbedTLS HOT 3
- WebSocketServer suddenly closing on clients reconnecting HOT 2
- copy-paste timing HOT 1
- iOS: websocket client failed due to TLS alert: unknown CA HOT 2
- Rate shaping HOT 2
- Tag RTP and RTCP packets with SDES MID
- MediaHandler does not have a virtual destructor HOT 2
- Segfault in RtcpReceivingSession
- Having Issue Opening Negotiated Data Channels HOT 4
- Strange binary data received by PeerConnection.video.onMessage HOT 2
- Complilation failure. Cmake. HOT 1
- build error on winodows HOT 7
- media-receiver HOT 1
- expect result on streamer HOT 1
- Use the captialization "windows.h" for mingw compatibility HOT 1
- The LICENSE files in the "client/client" and "client/benchmark" directories appear to be GPL v2 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libdatachannel.