안녕하세요
iOS로 p2p 연결, voice chat을 개발하고 있는데요,
1번째 연결을 let remonCall = RemonCall()
remonCall.closeRemon()
로 종료후 다시
remonCall.connect(channelId, config) 를 호출 할 경우, 다음과 같이 에러발생후
바로 close가 됩니다.
다시 연결할 수 있는 방법 문의드립니다.
[에러 로그]
init RemonController
load RemonSettrings
RTCDispatcher - typeAudioSession :
********** ac.ioBufferDuration 0.02
********** ac.sampleRate 48000.0
** Error RTCAudioSessionConfiguration The operation couldn’t be completed. (OSStatus error -50.)
2019-04-02 14:24:41.293355+0900 mindpro_new[1754:133740] [NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDomain Code=13 “Permission denied”, descriptor: <CTServiceDescriptor 0x283720980, domain=1, instance=1>
supportedCodec <RTCVideoCodecInfo: 0x283720660>
encoderFactory.preferredCodec H264 true
2019-04-02 14:24:41.303450+0900 mindpro_new[1754:133740] [NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDomain Code=13 “Permission denied”, descriptor: <CTServiceDescriptor 0x2837200a0, domain=1, instance=1>
url https://signal.remotemonster.com/rest/init
supportedCodec <RTCVideoCodecInfo: 0x283727a20>
encoderFactory.preferredCodec H264 true
url https://signal.remotemonster.com/rest/init
WS Setup is completed
WebSocket(url!) wss://signal.remotemonster.com/ws
WS Setup is completed
*********** WS Socket is Opened
Remon Manager 0
[]onStateChange 0
connect Channel
[onInit]
*********** WS Socket is Opened
Remon Manager 0
[]onStateChange 0
connect Channel
[onInit]
200!
WS Socket State is onConnect
onConnect
DEBUG ice RTCConfiguration: {
(
“RTCIceServer:\n(\n “stun:stun.l.google.com:19302”\n)\n(null)\n(null)\nRTCTlsCertPolicySecure\n(null)\n(\n)\n(\n)”,
“RTCIceServer:\n(\n “turn:demo.remotemonster.com:3478”\n)\nremon\n0987654321\nRTCTlsCertPolicySecure\n(null)\n(\n)\n(\n)”
)
ALL
MAX_BUNDLE
NEGOTIATE
TCP_ENABLED
CANDIDATE_ALL_NETWORKS
GATHER_CONTINUALLY
PLAN_B
50
0
-1
-1
0
0
0
(null)
(null)
0
0
0
5
0
(null)
}
[]didReceiveLocalAudioTrack RTCMediaStreamTrack:
audio
ARDAMSa0
enabled
Live
----------------------- peerConnectionShouldNegotiate --------------------
create offer is completed
Remon Manager 2
[]onStateChange 2
********* new sdp : v=0
o=- 7681254078619162242 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS ARDAMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:iK/C
a=ice-pwd:LTvk53ZswkxiAs8oT0Zs5/sE
a=ice-options:trickle renomination
a=fingerprint:sha-256 16:7B:CE:1A:ED:11:BD:F4:68:9E:0D:F4:7D:13:E6:83:3D:87:3F:4C:C0:8C:0B:56:FB:8B:F3:38:79:7F:67:2A
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:102 ILBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3663089097 cname:C2issu3o/0/P7ARH
a=ssrc:3663089097 msid:ARDAMS ARDAMSa0
a=ssrc:3663089097 mslabel:ARDAMS
a=ssrc:3663089097 label:ARDAMSa0
----------------------- sigStateChanged to 1
SDP: Description is created
v=0
o=- 7681254078619162242 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS ARDAMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:iK/C
a=ice-pwd:LTvk53ZswkxiAs8oT0Zs5/sE
a=ice-options:trickle renomination
a=fingerprint:sha-256 16:7B:CE:1A:ED:11:BD:F4:68:9E:0D:F4:7D:13:E6:83:3D:87:3F:4C:C0:8C:0B:56:FB:8B:F3:38:79:7F:67:2A
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:102 ILBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3663089097 cname:C2issu3o/0/P7ARH
a=ssrc:3663089097 msid:ARDAMS ARDAMSa0
a=ssrc:3663089097 mslabel:ARDAMS
a=ssrc:3663089097 label:ARDAMSa0
200!
WS Socket State is onConnect
onConnect
DEBUG ice RTCConfiguration: {
(
“RTCIceServer:\n(\n “stun:stun.l.google.com:19302”\n)\n(null)\n(null)\nRTCTlsCertPolicySecure\n(null)\n(\n)\n(\n)”,
“RTCIceServer:\n(\n “turn:demo.remotemonster.com:3478”\n)\nremon\n0987654321\nRTCTlsCertPolicySecure\n(null)\n(\n)\n(\n)”
)
ALL
MAX_BUNDLE
NEGOTIATE
TCP_ENABLED
CANDIDATE_ALL_NETWORKS
GATHER_CONTINUALLY
PLAN_B
50
0
-1
-1
0
0
0
(null)
(null)
0
0
0
5
0
(null)
}
didCreateSessionDescription is called
SDP was set and remonstate= Optional(RemoteMonster.RemonState)
iceGatheringStateChanged to 1
[]didReceiveLocalAudioTrack RTCMediaStreamTrack:
audio
ARDAMSa0
enabled
Live
----------------------- peerConnectionShouldNegotiate --------------------
create offer is completed
Remon Manager 2
[]onStateChange 2
********* new sdp : v=0
o=- 4831907116934513753 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS ARDAMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:LB/k
a=ice-pwd:CZjFInnIuhU0+TLe2S5dtb4T
a=ice-options:trickle renomination
a=fingerprint:sha-256 B7:25:8C:A5:14:61:A7:60:6C:58:80:BB:CA:EF:78:36:ED:15:8B:70:A2:20:48:1A:1A:7A:14:02:EA:1A:11:13
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:102 ILBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:1102201899 cname:ABgJs+hlGfpGdMbp
a=ssrc:1102201899 msid:ARDAMS ARDAMSa0
a=ssrc:1102201899 mslabel:ARDAMS
a=ssrc:1102201899 label:ARDAMSa0
200!
WS Socket State is onStateChange
onStateChange: CONNECT
Remon Manager 2
[]onStateChange 2
----------------------- sigStateChanged to 1
SDP: Description is created
v=0
o=- 4831907116934513753 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS ARDAMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:LB/k
a=ice-pwd:CZjFInnIuhU0+TLe2S5dtb4T
a=ice-options:trickle renomination
a=fingerprint:sha-256 B7:25:8C:A5:14:61:A7:60:6C:58:80:BB:CA:EF:78:36:ED:15:8B:70:A2:20:48:1A:1A:7A:14:02:EA:1A:11:13
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:102 ILBC/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:1102201899 cname:ABgJs+hlGfpGdMbp
a=ssrc:1102201899 msid:ARDAMS ARDAMSa0
a=ssrc:1102201899 mslabel:ARDAMS
a=ssrc:1102201899 label:ARDAMSa0
200!
WS Socket State is onSdp
onSdp
onSdp body : 1280 bytes
onSdp body string: {
“type” : “offer”,
“sdp” : “v=0\r\no=- 7681254078619162242 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio\r\na=msid-semantic: WMS ARDAMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:iK/C\r\na=ice-pwd:LTvk53ZswkxiAs8oT0Zs5/sE\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 16:7B:CE:1A:ED:11:BD:F4:68:9E:0D:F4:7D:13:E6:83:3D:87:3F:4C:C0:8C:0B:56:FB:8B:F3:38:79:7F:67:2A\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:102 ILBC/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:3663089097 cname:C2issu3o/0/P7ARH\r\na=ssrc:3663089097 msid:ARDAMS ARDAMSa0\r\na=ssrc:3663089097 mslabel:ARDAMS\r\na=ssrc:3663089097 label:ARDAMSa0\r\n”
}
-ufrag:LB\/k\r\na=ice-pwd:CZjFInnIuhU0+TLe2S5dtb4T\r\na=ice-options:trickle renomination\r\na=fingerprint:sha-256 B7:25:8C:A5:14:61:A7:60:6C:58:80:BB:CA:EF:78:36:ED:15:8B:70:A2:20:48:1A:1A:7A:14:02:EA:1A:11:13\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus\/48000\/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC\/16000\r\na=rtpmap:104 ISAC\/32000\r\na=rtpmap:9 G722\/8000\r\na=rtpmap:102 ILBC\/8000\r\na=rtpmap:0 PCMU\/8000\r\na=rtpmap:8 PCMA\/8000\r\na=rtpmap:106 CN\/32000\r\na=rtpmap:105 CN\/16000\r\na=rtpmap:13 CN\/8000\r\na=rtpmap:110 telephone-event\/48000\r\na=rtpmap:112 telephone-event\/32000\r\na=rtpmap:113 telephone-event\/16000\r\na=rtpmap:126 telephone-event\/8000\r\na=ssrc:1102201899 cname:ABgJs+hlGfpGdMbp\r\na=ssrc:1102201899 msid:ARDAMS ARDAMSa0\r\na=ssrc:1102201899 mslabel:ARDAMS\r\na=ssrc:1102201899 label:ARDAMSa0\r\n"\n}"}
didCreateSessionDescription is called
SDP was set and remonstate= Optional(RemoteMonster.RemonState)
iceGatheringStateChanged to 1
WS Socket State is onIce
onIce : {
“candidate” : “candidate:2595196448 1 udp 2122260223 10.10.12.210 64332 typ host generation 0 ufrag iK/C network-id 1 network-cost 10”,
“sdpMid” : “audio”,
“sdpMLineIndex” : 0
}
SDP was set and remonstate= Optional(RemoteMonster.RemonState)
[]onError The operation couldn’t be completed. (RemoteMonster.RemonError error 8.)
[onError] IceFailed(“Failed to set remote answer sdp: Failed to apply the description for audio: Answerer must use either active or passive value for setup attribute.”)
[onClose] start
[onClose] end
Error is occured! Failed to set remote answer sdp: Failed to apply the description for audio: Answerer must use either active or passive value for setup attribute.
200!
WS Socket State is onIce
onIce : {
“candidate” : “candidate:24033082 1 udp 2122194687 169.254.224.97 52386 typ host generation 0 ufrag iK/C network-id 2 network-cost 10”,
“sdpMid” : “audio”,
“sdpMLineIndex” : 0
}
200!
WS Socket State is onIce
onIce : {
“candidate” : “candidate:2595196448 2 udp 2122260222 10.10.12.210 52447 typ host generation 0 ufrag iK/C network-id 1 network-cost 10”,
“sdpMid” : “audio”,
“sdpMLineIndex” : 0
}
200!
WS Socket State is onIce
onIce : {
“candidate” : “candidate:24033082 2 udp 2122194686 169.254.224.97 63820 typ host generation 0 ufrag iK/C network-id 2 network-cost 10”,
“sdpMid” : “audio”,
“sdpMLineIndex” : 0
}
200!