Sip.js: ๋ชจ๋ฐ”์ผ ์ง€์›

์— ๋งŒ๋“  2014๋…„ 06์›” 05์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: onsip/SIP.js

์ด๊ฒƒ์€ SIP.js์— ๋Œ€ํ•œ ๋ชจ๋ฐ”์ผ ์ง€์›์„ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. https://github.com/alongubkin/phonertc/issues/7 ์ฐธ์กฐ

enhancement question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜ํ•œ SIP๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šคํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • SDH๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. [email protected] ์ œ๊ณต๋œ ์ฝ”๋ฅด๋„๋ฐ” / ์•„์ดํฐ OS์˜ WebRTC ๊ตฌํ˜„. Cordova๊ฐ€ RTCPeerConnection.setLocalDescription() ๋ฐ setRemoteDescription()์— ๋Œ€ํ•œ ์ธ์ˆ˜์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” npm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/WesUnwin/cordova-ios-session-description-handler

์ด๊ฒƒ์€ ๋˜ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • SDH๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜ํ•œ ์œ ์šฉํ•œ ์ถœ๋ฐœ์ ์ธ SIP.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด๋ถ€์˜ ๊ธฐ๋ณธ SDH์— ์ถ”๊ฐ€). ์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋ชจ๋“  26 ๋Œ“๊ธ€

์ด Joseph์„ ์—ด์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” SIP ํ†ตํ™”๋ฅผ ์ง€์›ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ(์›น, iOS, Android)์ž…๋‹ˆ๋‹ค. ์ €๋Š” PJSip์šฉ Phonegap ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์—…ํ•˜๊ณ  ์žˆ์ง€๋งŒ iOS ๋ฐ Android์—์„œ WebRTC๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๋ณต์žก์„ฑ ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ PhoneRTC์™€ ๊ฐ™์€ ๊ฒƒ์ด ์ถ”๊ตฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

์—ฌ๊ธฐ ๋‚ด ์‘๋‹ต์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. https://github.com/alongubkin/phonertc/issues/7

ํ˜„์žฌ ์ƒํƒœ์˜ PhoneRTC๊ฐ€ SIP.js์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์ด ์–ด๋””์— ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ข‹์€ ์ถœ๋ฐœ์ ์ž…๋‹ˆ๋‹ค.

iOS์˜ ๊ฒฝ์šฐ WebRTC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(SSL ์‚ฌ์šฉ)๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ด์ œ Obj-C ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ•„์š”ํ•œ WebRTC ๊ธฐ๋Šฅ์„ SIP.js์— ๋…ธ์ถœํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚ด ๋ชฉํ‘œ๋Š” SIP.js์™€ iOS์—์„œ WebRTC ์Œ์„ฑ ํ†ตํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋””์˜ค ๊ธฐ๋Šฅ์ด ํ™•์‹คํ•ด์ง€๋ฉด ๋น„๋””์˜ค ์ถ”๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋””์˜ค์— ๋Œ€ํ•œ ์ œ ์•„์ด๋””์–ด๋Š” ํŽ˜์ด์ง€์— ์žˆ๋Š” ์š”์†Œ์˜ ID๋ฅผ ๊ฐ€์ ธ์™€ Obj-C์— ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๊ฐ€ ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์š”์†Œ๋ฅผ ์ฐพ๊ณ  ๊ทธ ์œ„์— ๋„ค์ดํ‹ฐ๋ธŒ ๋น„๋””์˜ค ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„๋งˆ๋„ ์ตœ๊ณ ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋น„๋””์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ์—ฌ์ „ํžˆ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

@lylepratt , iOS ์ง€์›์ด ์•ฑ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธ ํ•˜๊ธฐ๋งŒ SIP.js ๋ฐ๋ชจ ์ „ํ™” ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. Android ์•ฑ์„ ์ •๋ง๋กœ ๊ฐ–๊ณ  ์‹ถ๋‹ค๋ฉด Crosswalk ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์•ฑ์„ WebRTC ์ง€์› WebView์™€ ํ•จ๊ป˜ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@lylepratt , ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ SIP.js์™€ ํ•จ๊ป˜ Crosswalk๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ž์Šต์„œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์•ฑ์— ํ†ตํ•ฉํ•˜๋ ค๋ฉด Crosswalk Cordova ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cordova์—์„œ ์ƒ์„ฑํ•œ Android ์•ฑ์— WebRTC ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Crosswalk Cordova์˜ HelloWorld ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‹œ์ž‘ํ•œ ํ›„ assets/www ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐ๋ชจ ์ „ํ™” ์ž์‚ฐ ์œผ๋กœ ๋ฐ”๊พธ๊ณ  AndroidManifest.xml์— ๋‹ค์Œ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ SIP.js ๋ฐ๋ชจ ์ „ํ™” ์•ฑ์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์šฐ๋ฆฌ๋Š”
iOS์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋…ผ์˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ•ฉ๋ฆฌ์ ์ธ ์‹œ๊ฐ„ ๋‚ด์— ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด PJSip ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ SIP.js API์— ๋งž๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
2014๋…„ 6์›” 11์ผ ์˜คํ›„ 2์‹œ 26๋ถ„์— "Joseph Frazier" [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@lylepratt https://github.com/lylepratt , ๊ธฐ๋ณธ ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
http://sipjs.com/guides/mobile/android-native/ Crosswalk ์‚ฌ์šฉ
๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด SIP.js.

Cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์•ฑ์— ํ†ตํ•ฉํ•˜๋ ค๋ฉด Crosswalk๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์ ธ์˜ฌ Cordova https://crosswalk-project.org/#documentation/cordova
Cordova์—์„œ ์ƒ์„ฑํ•œ Android ์•ฑ์— ๋Œ€ํ•œ WebRTC ๊ธฐ๋Šฅ. ์‹œ์ž‘ํ•œ ํ›„
Crosswalk Cordova์˜ HelloWorld ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ
https://crosswalk-project.org/#documentation/cordova/develop_an_application ,
SIP.js ๋ฐ๋ชจ ํฐ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. http://sipjs.com/demo-phone/
asset/www ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐ๋ชจ ์ „ํ™” ์ž์‚ฐ์œผ๋กœ ๊ต์ฒดํ•˜์—ฌ ์•ฑ
https://github.com/onsip/sipjs-examples/tree/6d260bfd8e3e1655a881ad1cad446ed2672d6611/demo-phone
AndroidManifest.xml์— ๋‹ค์Œ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.



โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/onsip/SIP.js/issues/31#issuecomment -45802303.

iOS์—์„œ ์Œ์„ฑ ํ†ตํ™”๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด PhoneRTC ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด SIP.js๊ฐ€ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜ ๋ฐค ๊ฐœ๋… ์ฆ๋ช… ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‹œ์—ฐํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด๋Š” SIP.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” iOS ์•ฑ์ด ๊ธฐ๋ณธ SIP.WebRTC.MediaHandler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ PhoneRTC ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • MediaHandler ๋ฅผ ์ œ๊ณต ํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์•ฑ์— SIP.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ œ ์‹คํ—˜์ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ๊ณ„์† ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@joseph-onsip, ํ† ๋ก ์— ๋”ฐ๋ฅด๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ค€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ๊ธฐ๋Š” phoneRTC API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ๊ณผ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•˜๋ฉฐ iOS์— ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ์ง„์ „์ด ์žˆ๋‹ค๋ฉด ์ด๋ฒˆ ์ฃผ๋ง์— POC๋ฅผ ์‹คํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ์ง„์ „์„ ์ด๋ฃจ์—ˆ๋‹ค. ๋‹ค์Œ์€ ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” WebRTC ์ง€์› SIP ๋์ ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ ์ž…๋‹ˆ๋‹ค(Chrome์—์„œ SIP.js ๋ฐ๋ชจ ์ „ํ™” ๋กœ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค).

ํ˜„์žฌ Android์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ธ ๊ฒƒ์ด๊ณ  phonertc ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. iOS ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”๋“œ์— ๋™์ผํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋ฉด WebRTC ๊ตฌํ˜„์—์„œ ํ”Œ๋žซํผ๋ณ„ ์ฐจ์ด์ ์„ ์ œ์™ธํ•˜๊ณ  ์ด ์•ฑ์ด ํ•ด๋‹น ํ”Œ๋žซํผ์—์„œ๋„ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์™€. ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•ด ๋ณด์˜€์Šต๋‹ˆ๋‹ค. mediaHandlerFactory ๋ฅผ PhoneRTCMediaHandler (PhoneRTC ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜)์œผ๋กœ ๋ฎ์–ด์“ฐ๊ณ  "๋ฐฉ๊ธˆ ์ž‘๋™"ํ–ˆ์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘: ์ฒ˜์Œ์—๋Š” PhoneRTCMediaHandler๊ฐ€ PhoneRTC์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์ž‘์„ฑํ–ˆ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํ•ฉ๋ฆฌ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ "๊ทธ๋ƒฅ ์ผํ–ˆ๋‹ค"?

๊ธ€์Ž„, ๋‚˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์™€ ํฌ๋กฌ ์‚ฌ์ด์—์„œ๋งŒ ์˜ค๋””์˜ค ํ๋ฆ„์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค ์ŠคํŠธ๋ฆผ์„ ์ ์ ˆํ•˜๊ฒŒ ์žฌ์ƒํ•˜๋ฏ€๋กœ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค . ํ•˜์ง€๋งŒ ์˜ˆ, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ SIP.js๋ฅผ ๋งค์šฐ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ฆฌํŒฉํ„ฐ๋ง์— ํฌ๊ฒŒ ๊ด€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ž‘์—… ์˜ˆ์ œ๋ฅผ ํ•จ๊ป˜ ๋ชจ์œผ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋‚ด ์ „ํ™”์˜ ์•ฑ์ด ์ŠคํŠธ๋ฆผ์„ ์ œ๋Œ€๋กœ ์žฌ์ƒํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–ด, ์ด๊ฒƒ์€ ๋‚ด ๋…ธํŠธ๋ถ์˜ WebRTC ๋ฌธ์ œ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์žฌ๋ถ€ํŒ…ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋‚˜๋Š” _from_ Chrome _to_ Android ํ†ตํ™”์—์„œ ์–‘๋ฐฉํ–ฅ ์˜ค๋””์˜ค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(์ด์ „์—๋Š” ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค). Chrome์ด ๋น„๋””์˜ค๊ฐ€ ์•„๋‹Œ ์˜ค๋””์˜ค๋งŒ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„์ง Firefox์— ์ „ํ™”๋ฅผ ๊ฑธ ์ˆ˜ ์—†์–ด์„œ ๋ฌธ์ œ ๋ฅผ

Android L์—๋Š” WebRTC ์ง€์›์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
iOS Cordova ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์ด๋“œ๋Š” sipjs.com์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ phonertc 2๋กœ ์ด์‹ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@thomasquintana ๋Š” ์ด๊ฒƒ์„ phonertc 2.0์œผ๋กœ ์ด์‹ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@alongubkin ์ด์ œ ๋Š์Šจํ•œ ๋์„
ํฌํฌ: https://github.com/BetterVoice/phonertc

@egreenmachine ๋‹ค์Œ์€ ์œ„์˜ ํฌํฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „์˜ ๋ฏธ๋””์–ด ํ•ธ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ์„ธ์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/BetterVoice/PhoneRTCMediaHandler

๋‹ค๋ฅธ ์†Œ์Šค์— ์ •๋ณด๊ฐ€ ์•ฝ๊ฐ„ ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์ด๊ฒƒ์€ ์ตœ๊ทผ์— ์ˆ˜์ •๋˜์—ˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ @egreenmachine์—์„œ ๋ชจ๋ฐ”์ผ ํ†ตํ•ฉ์— ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด์ •ํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๋ณด๊ณ ํ•  ๋‚ด์šฉ์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” NativeScript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  SIP.js์˜ ์ง€์›์„ ๋ฐ›๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๊ฐœ๋ฐœ ์ค‘์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SIP.js ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์ง ํ™•์‹คํ•˜๊ฒŒ ๋งํ•˜๊ธฐ๋Š” ์ด๋ฅด๋‹ค. ์ฆ‰, ๋„ค์ดํ‹ฐ๋ธŒ WebRTC ๋“œ๋ผ์ด๋ฒ„, SIP.js ๋ฐ NativeScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ ํ•  ๋‚ด์šฉ์ด ๋” ์žˆ์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@cybrox SIP.Js ๋ฒ„์ „ 0.7.8์€ Android์˜ ํšก๋‹จ๋ณด๋„ ๋ฐ iOS์˜ iosrtc๊ฐ€ ์žˆ๋Š” ์ฝ”๋ฅด๋„๋ฐ”์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ SIP.Js 0.9.2๋Š” RTC ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@egreenmachine ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ๋„ ์ž‘์—…ํ•ด ์ฃผ์„ธ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

@greenmachine์€ nativescript๋กœ sipjs๋ฅผ ์–ป๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๋ ฅ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋ฅด๋„๋ฐ” ์•ฑ์œผ๋กœ sipjs 0.7.8์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ sipjs๋Š” ์ž ์žฌ์ ์ธ ๊ต์ฒด๋ฅผ ์œ„ํ•ด ๋” ์ด์ƒ ์ฝ”๋ฅด๋„๋ฐ”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ณต์œ ํ•ด๋„ ๋ ๊นŒ์š”? ๋„ค์ดํ‹ฐ๋ธŒ webrtc๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@andrewvmail ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ๊ธฐ๋ณธ WebRTC๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ๋งž์ถคํ˜• SDH๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋“ค๋ฆด์ง€์–ธ์ •, ๊ทธ๊ฒƒ์€ ๊ทธ๋Ÿฐ ๊ฒƒ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„์„ ๊ณต๊ฐœํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ํ•˜๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ์–ด๋ ต๊ณ  ๊ณต๊ฐœ์ ์œผ๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ—Œ์‹ ํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ ์•ฑ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฝค ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ผ๋ฐ˜ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ์ฆ‰์‹œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฌธ์ œ์— ๋ถ€๋”ชํž ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋™์—์„œ ์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ์˜ ๊ฒฝ์šฐ ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ ์ง€์›์€ ์ฃผ์š” ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Android์˜ Chrome๊ณผ iOS์˜ Safari์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ํ™˜๊ฒฝ์„ ์œ„ํ•ด ๋งŒ๋“  SDH์— ๋Œ€ํ•œ PR์„ ๋‹ค์‹œ ์ œ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ชจ๋ฐ”์ผ ์ฃผ๋ณ€์˜ ๊ตฌ๋ฆ„์„ ์ œ๊ฑฐํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์งˆ๋ฌธ์ด๋‚˜ ์˜๊ฒฌ์ด ์žˆ์œผ๋ฉด ์—ฐ๋ฝํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

๋˜ํ•œ SIP๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šคํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • SDH๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. [email protected] ์ œ๊ณต๋œ ์ฝ”๋ฅด๋„๋ฐ” / ์•„์ดํฐ OS์˜ WebRTC ๊ตฌํ˜„. Cordova๊ฐ€ RTCPeerConnection.setLocalDescription() ๋ฐ setRemoteDescription()์— ๋Œ€ํ•œ ์ธ์ˆ˜์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฐœ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” npm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/WesUnwin/cordova-ios-session-description-handler

์ด๊ฒƒ์€ ๋˜ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • SDH๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜ํ•œ ์œ ์šฉํ•œ ์ถœ๋ฐœ์ ์ธ SIP.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด๋ถ€์˜ ๊ธฐ๋ณธ SDH์— ์ถ”๊ฐ€). ์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์•Œ์•„ ์ฐจ๋ ธ๋‹ค :

โ€œThe bulk of SIP.js no longer cares about the media and what itโ€™s doing, which opens up some exciting possibilities, like running it in a non-web browser, NativeScript on a phone, or Node.js on a desktop app,โ€ notes James Criscuolo, Director of Software Engineering at OnSIP.

์ฐธ์กฐ: https://www.onsip.com/voip-news/onsip-news/sipjs-v0.8.0-supports-all-major-browsers-and-renegotiation

๋„ค์ดํ‹ฐ๋ธŒ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ง€์›๋˜๋‚˜์š”?

Nativescript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OnSIP ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, WebRTC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Nativescript์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ˜์‘์œผ๋กœ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ–ˆ์œผ๋ฉฐ ์ด๋Š” ์ €ํ•ญ์ด ๊ฐ€์žฅ ์ ์€ ๊ฒฝ๋กœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, Baidu ๋ธŒ๋ผ์šฐ์ €(์ค‘๊ตญ)๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋“ฑ๋ก ๊ฐ€๋Šฅ, ์ •๋ณด ์ „์†ก ๊ฐ€๋Šฅ, ๋‹ค์ด์–ผ ๋ถˆ๊ฐ€

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰