我试图用nodejs开发一个web应用程序。我正在使用一个叫 "simple-peer "的npm包,但我不认为这个问题与此有关。我能够使用这个包,并且当它与一个使用apache服务器作为后端的laravel应用程序集成时,它能够工作。我可以通过主机在网络上的IP:PORT访问主机,并通过点对点连接成功地将一个单独的客户端连接到主机上。但是,我现在想在没有apache后端的情况下,用node专门开发这个。我的express服务器在3000端口上运行,我可以通过IP:3000从同一网络的远程客户端访问索引页面。但是当我尝试通过webrtc连接时,我得到一个 "连接失败 "的错误。如果我在同一台本地设备上连接两个不同的浏览器实例,连接就会成功。
作为参考:我只是使用了复制的代码,来自于 这个 使用演示。我有 "simplepeer.min.js",并引用在正确的目录下。
所以我的主要问题是:是否有一个设置或一些webRTC协议可能会阻止远程客户端的连接?我需要改变什么才能满足这个要求?为什么在apache的laravelwebpack应用中可以使用,而在express中就不行?
如果你的远程客户端无法获得icecandidates,你需要TURN服务器。
当WebRTC Peer在NAT、防火墙后或使用蜂窝网络(如智能手机)时,P2P连接会失败。
这时,TURN服务器将作为中继服务器工作。
我推荐 coTurn.
这里是一个简单的实现简单的peer与nodejs后台的多用户视频音频聊天。你可以在下面找到客户端代码 /public/js/main.js
. Github项目 和 演示.
而就像@张金浩说的那样。你确实需要一个回合服务器来传递信息。这里有一个公共回合服务器的列表。