如何使用 java 创建我自己的 STUN 或 TURN 服务器

Posted

技术标签:

【中文标题】如何使用 java 创建我自己的 STUN 或 TURN 服务器【英文标题】:How to create my own STUN or TURN server using java 【发布时间】:2017-10-19 17:32:32 【问题描述】:

我一直在使用WebRTC 并使用Java Websocket 作为信令服务器来开发视频聊天应用程序。

此应用程序在 Tomcat 上成功运行。

目前我正在使用谷歌的 STUN 服务器。

var pc_config = "iceServers": ["url": "stun:stun.l.google.com:19302"]; var pc = 新的 RTCPeerConnection(pc_config);

我不想像上面那样在公共或第 3 方 STUN 服务器上进行中继。

由于我的应用程序将发布到具有专用域的公共 Tomcat 服务器。我想使用/设置我自己的 STUN 或 TURN 服务器。

我可以用 Tomcat 做到这一点吗? 是否有任何稳定的开源库可用于此?

如果有的话,请给我举个例子。

【问题讨论】:

【参考方案1】:

我认为尝试填充信令和 NAT 遍历(=STUN/TURN 服务器)是错误的方法。您使用它们处理扩展的方式是不同的,并且您最终暴露给开放互联网的每个表面也不同。

由于这些原因,为 STUN/TURN 服务器使用不同的语言/技术并没有真正的问题。我会选择coturn 或restund 这里。

您还可以使用一些托管的商业服务来代替自己部署,而且它们真的不贵。

【讨论】:

【参考方案2】:

更好的方法是在您的服务器上使用开源解决方案作为服务。示例:https://github.com/coturn/rfc5766-turn-server/ - 功能强大且稳定,支持附加功能。

AFAIK,没有可以在 Tomcat 下运行的 Java STUN/TURN 库。虽然,有一些基于 Java 的开源项目,比如这个:https://github.com/jitsi/turnserver

【讨论】:

以上是关于如何使用 java 创建我自己的 STUN 或 TURN 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Java 和我应该使用哪些 Stun 库?

如何使用 Stun 和 ice4j 接收公共 IP 和端口

如何判定是stun协议

用于 Java 的 STUN、TURN、ICE 库

如何自托管不依赖 WebRTC STUN 服务器 stun.l.google.com:19302?

stun server安装与使用