代码之家  ›  专栏  ›  技术社区  ›  yspreen

Janus gateway视频室在60秒后取消连接

  •  0
  • yspreen  · 技术社区  · 6 年前
    "peerConnection new connection state: connected"
    {
       "janus": "webrtcup",
       "session_id": 3414770196795261,
       "sender": 4530256184020316
    }
    {
       "janus": "media",
       "session_id": 3414770196795261,
       "sender": 4530256184020316,
       "type": "audio",
       "receiving": true
    }
    
    ... 1 minute passes
    
    "peerConnection new connection state: disconnected"
    {
       "janus": "timeout",
       "session_id": 3414770196795261
    }
    "peerConnection new connection state: failed"
    

    看到了吗 pastebin

    我想加入Janus服务器上的视频室。所有请求似乎都成功了,并且我的设备在由于超时而取消连接之前显示了一分钟左右的已连接WebRTC状态。

    我试着每10秒添加一条心跳WebSocket消息,但是没有用。我是

    1. 加入房间
    2. 用所述SDP配置房间
    3. 收到杰纳斯的答复
    4. 用我的WebRTC对等连接接受这个答案。

    我还尝试在Janus配置中设置一个眩晕服务器,但没有成功。同样的问题。

    也将服务器日志添加到粘贴箱中。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Sajid Zeb    5 年前

    您需要发送具有相同“session\u id”的“keepalive”消息以保持会话继续。Janus在60秒后结束会话。

    https://janus.conf.meetecho.com/docs/rest.html

    private Handler mHandler;
    private Runnable fireKeepAlive = new Runnable() {
        @Override
        public void run() {
    
            String transactionId = getRandomStringId();
            JSONObject request = new JSONObject();
            try {
                request.put("janus", "keepalive");
                request.put("session_id", yourSessionId);
                request.put("transaction", transactionId);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            myWebSocketConnection.sendTextMessage(request.toString());
    
            mHandler.postDelayed(fireKeepAlive, 30000);
        }
    };
    

    然后在OnCreate()中

    mHandler = new Handler();
    

    mHandler.post(fireKeepAlive);
    

    确保在销毁时删除回调

    mHandler.removeCallbacks(fireKeepAlive);
    
        2
  •  0
  •   yspreen    6 年前

    RTFM:Janus的websocket连接需要每<60秒保持一次。

    需要指出的一个重要方面是WebSockets Janus频道的保持活动消息。Janus会话保持活动状态,只要在60秒内没有不活动:如果在该时间段内没有收到任何消息,该会话将被服务器中断。会话上的正常活动通常足以防止这种情况发生;对于消息传递方面较长时间的不活动,在纯HTTP上,会话通常通过常规的长轮询请求保持活动状态,只要会话处于活动状态,该请求就起作用。当使用WebSockets时,这种帮助显然是不可能的,在WebSockets中,一个通道用于发送请求和接收事件和响应。因此,应该定期触发一个临时消息来保持Janus会话的活动。 Link .

    推荐文章