V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kekxv
V2EX  ›  WebRTC

求助关于 WebRTC 只能在局域网建立成功问题

  •  
  •   kekxv · 2020-08-05 10:52:48 +08:00 · 5239 次点击
    这是一个创建于 1350 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我整了个 golang + websocket + WebRTC 的,原本是为了屁 2 屁传文件,

    但是现在WebRTC只在局域网内建立成功, 这样的话,就只能使用 websocket 通过服务端进行转发,

    但是这样跑服务器带宽,有点贵啊,能给点啥子建议或者帮忙看看是因为什么只能在局域网建立成功?

    项目在 https://github.com/kGoChat

    用的是 golangvue

    15 条回复    2020-09-30 09:21:43 +08:00
    zhlssg
        1
    zhlssg  
       2020-08-05 11:01:06 +08:00
    需要 https 吧
    kekxv
        2
    kekxv  
    OP
       2020-08-05 11:08:09 +08:00
    @zhlssg 挂在外网之后没有使用 https 也成功,所以没有测试 https,我再试试
    xylophone21
        3
    xylophone21  
       2020-08-05 11:15:23 +08:00
    测一下路由器的类型
    kekxv
        4
    kekxv  
    OP
       2020-08-05 12:16:28 +08:00
    @zhlssg 测试了 https,也没成功

    @xylophone21 这个咋侧?我有个公网 IP 的主机一起建立连接,也失败了
    xuchdeid
        5
    xuchdeid  
       2020-08-05 12:55:44 +08:00
    需要配置 iceServers

    new RTCPeerConnection({
    iceServers: [
    {
    urls: `turn:${hostName}:3478`,
    username: "***",
    credential: "***",
    },
    {
    urls: `stun:${hostName}:3478`,
    },
    ],
    })
    suconghou
        6
    suconghou  
       2020-08-05 12:57:00 +08:00
    你配置 iceServer 了吗? 这个肯定要 turnserver 辅助打洞的,p2p 也不是 100%能建立起来的,实在不行还是要靠 stunserver 中转
    silenzio
        7
    silenzio  
       2020-08-05 13:16:47 +08:00
    @suconghou 说反了吧 stun 是打洞 turn 是转发
    silenzio
        8
    silenzio  
       2020-08-05 13:20:48 +08:00
    建议查询一下: NAT 内网穿透 等关键字
    比如: https://www.jianshu.com/p/84e8c78ca61d
    你需要在公网上部署一个 signaling 服务器, stun 服务器, 一个 turn 服务器.
    可以试试开源的 coturn
    这个网站可以测试部署是否成功 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
    suconghou
        9
    suconghou  
       2020-08-05 16:39:11 +08:00
    @silenzio 嗯, 说反了
    kekxv
        10
    kekxv  
    OP
       2020-08-05 16:39:21 +08:00
    @xuchdeid @suconghou 配了 iceServer 的 stun,没有不是 turn,然后测试的 stun 服务器也没有问题。

    @silenzio #8 我配置了这个服务器,测试部署也成功了。

    关键是,我用一台公网机器(公网 ip 直接配在 PC 上)和另一个局域网的机器进行连接,然后失败了!!!!
    kekxv
        11
    kekxv  
    OP
       2020-08-07 10:57:25 +08:00
    目前外网也能成功了,但是局限性比较大,算了,看看先处理功能吧
    silenzio
        12
    silenzio  
       2020-08-08 09:06:08 +08:00
    @kekxv 有个小提醒, 上云的话, 不要选弹性 ip, 会有大几率穿透失败, 所有流量走 turn 转发
    比如华 x 云
    lol173
        13
    lol173  
       2020-09-22 15:23:49 +08:00
    我的 turn 服务,连不上 ,报 reason: allocation timeout,又遇到这样的问题吗? stun 也不行,求指教
    @kekxv
    kekxv
        14
    kekxv  
    OP
       2020-09-23 13:34:08 +08:00 via iPhone
    @lol173 用做好的 docker 容器先测试下
    lol173
        15
    lol173  
       2020-09-30 09:21:43 +08:00
    @kekxv 问题出在客户端,谢谢回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1000 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:48 · PVG 03:48 · LAX 12:48 · JFK 15:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.