Appendix - GiGAGenie-ServiceSDK/UserGuide GitHub Wiki
κ° ν΄λΌμ΄μΈνΈλ λΆμ°λ Node processμμ μ μνλλΌλ 곡ν΅λ μΈμ μ 곡μ νμ¬ λ°μ΄ν°λ₯Ό μ‘/μμ ν μ μμ΅λλ€.
- μΉ μμΌ μλ² μ 보 (SSLλ§ μ΄μ© κ°λ₯)
- wss://svcapp.gigagenie.ai/channel
- WebSocket API Payload (μμ½μ΄)
- msgtype : λ©μμ§ μ‘/μμ μ ν
-
β request: μλΉμ€ ν΄λΌμ΄μΈνΈμμμ μμ², trxidλ₯Ό μ€μ ν΄μ νΈλμμ
μ ꡬλΆν΄μΌν¨
β‘ reply: requestμ λν μλ²μμμ μ²λ¦¬ κ²°κ³Ό μ λ¬, trxidλ‘ transaction ꡬλ³
β’ notify: μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μ λ¬λλ event μλ¦Ό, trxid μμ
β£ data: Data μ λ¬, trxid μμ, λ°μ΄ν° μ λ¬ μ±λ μ 보(TBD)
- operation : μΈμ¦, μΈμ
μμ±/μλ©Έ, νΉμ λ°μ΄ν° μ λ¬ λ±μ μμ
ꡬλΆμ
-
β auth: μΈμ¦, μλ²μ ν΄λΌμ΄μΈνΈκ° μΈμ¦ μμ² μ μ¬μ©
β‘ iam: μΈμ¦, μλ²μμ WebSocket μ μν ν΄λΌμ΄μΈνΈμ notifyν λ μ¬μ©
β’ create_session: μ±λ μΈμ μμ±
β£ join_session: μμ±λ μ±λ μΈμ μ μ°Έμ¬
β€ ras_alive: WebSocket μ°κ²° μ μ§λ₯Ό μν PING-PONGμ μ¬μ©
β₯ destroy_session: μμ±λ μ±λ μΈμ μ μ’ λ£
β¦ set_input_history: ν μ€νΈλ₯Ό μν μ λ ₯λ URL μ μ₯(UUIDκΈ°μ€, κ°λ°μ μ§μ)
β§ get_input_history: ν μ€νΈλ₯Ό μν μ λ ₯λ URL μ‘°ν(UUID κΈ°μ€, κ°λ°μ μ§μ)
β¨ set_appid_devmode: ν΄λΉ APP_IDμ κ°λ°μλͺ¨λ μ€μ
β© check_appid_devmod: ν΄λΉ APP_IDκ° κ°λ°μλͺ¨λλ‘ μ€μ λμλμ§ νμΈ
βͺ confirm_appid_devmode: ν΄λΉ APP_IDλ₯Ό κ°λ°μλͺ¨λλ‘ μ€μ (κ°λ°μ μΌν°μ©, REST APIλ‘ λ체 κ°λ₯)
- channeltype: μΉ μμΌ μ±λμ μ©λ ꡬλΆμ
-
β rtcaudio: WebRTC μ€λμ€ μ±λ μ ν
β‘ system: μλ²μμ λ°μνλ notifyλ₯Ό μ λ¬νλ μ±λ μ ν (μ, ras_alive)
- msgtype : λ©μμ§ μ‘/μμ μ ν
WebSocket Protocolμ μλΉμ€μ λ°λΌ μμλ‘ μ§μ νμ¬ μ¬μ©ν μ μμ΅λλ€.
- WebSocket Protocolνμ€ μ€μ(Header: Sec-WebSocket-Protocol)
- μ°κ²°μμ) [βwss://svcapp.gigagenie.ai/channelβ, βws-channel-v1β]
-
β μ΅μ΄ Client λ μλ²μ WebSocket connect λ₯Ό μλν©λλ€.
- Message sample :
{ "msgtype":"notify", "operation":"iam", "channeltype":"system" }
- Client μμμ μμ μ²λ¦¬λ μλμ WebSocket ν΄λΌμ΄μΈνΈ μν μμ€ μ°Έκ³ .
- Message sample :
{ "msgtype":"request", "operation":"auth", "uuid":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "channeltype":"webrtcaudio" }
- Client μμ Request μ²λ¦¬λ μλμ WebSocket ν΄λΌμ΄μΈνΈ μν μμ€ μ°Έκ³ .
- Message sample :
{ "msgtype":"reply", "operation":"auth", "channeltype":"system", "result_cd":200, "result_msg":"authorized" }
- Client μμ Reply μ²λ¦¬λ μλμ WebSocket ν΄λΌμ΄μΈνΈ μν μμ€ μ°Έκ³ .
β‘ μλ²λ μ μν ν΄λΌμ΄μΈνΈμ μΈμ¦μ΄ νμν¨μ μ립λλ€.
β’ Client λ μΈμ¦ Request λ₯Ό ν΅ν΄ μΈμ¦μ μμ²ν©λλ€.
β£ μλ²μ¬μ΄λμμλ λ΄λΆ μΈμ¦ μ°λμ ν΅νμ¬ κ·Έ κ²°κ³Όλ₯Ό reply ν©λλ€.
β€ μΈμ¦μ μ±κ³΅νλ©΄ μ μμ μ μ§λκ³ , ν΅μ μ ν μ μλ μνκ° λ©λλ€.
β₯ λ§μ½, μΌμ μκ° Client κ° μΈμ¦μ μνμ§ μμΌλ©΄ μ μμ μλ μ’
λ£λ©λλ€.
socket.onmessage = function(message) { console.log('Socket server message', message.data); document.getElementById('response').innerHTML = message.data; let pdata = JSON.parse(message.data); console.log(pdata); if (pdata.msgtype === 'notify') { if (pdata.operation === 'iam') { var auth_message = { "msgtype": "request", "operation": "auth", "uuid": uuid, "channeltype": "webrtcaudio", }; socket.send(JSON.stringify(auth_message)); console.log('auth message sent.'); } if (pdata.operation !== 'ras_alive') {; } } else if (pdata.msgtype === 'reply') { // authorized if (pdata.operation == 'auth') { if (pdata.result_cd == 200) { var create_session = { "msgtype": "request", "operation": "create_session", "channeltype": "webrtcaudio", "uuid": uuid, "trxid": "K0000000:1501463079077:00002" }; socket.send(JSON.stringify(create_session)); console.log('create_session message sent.'); } else {; } } } else if (pdata.msgtype === 'data') {; } };
GATE-API Channel μλ²λ μ μν ν΄λΌμ΄μΈνΈκ° μΌμ ν μκ° μ΄λ΄μ Alive λ©μμ§λ₯Ό λ°μ‘νμ§ μμΌλ©΄ μ μμ κ°μ λ‘ μ’ λ£ν©λλ€.
- Message sample :
{ "msgtype":"notify", "operation":"ras_alive", "channeltype":"system" }
- Client μμ alive μ²λ¦¬λ λ€μμ WebSocket ν΄λΌμ΄μΈνΈ μν μμ€ μ°Έκ³ .
- μλ² μ μ μ’ λ£ μκ°: 70 seconds
- ν΄λΌμ΄μΈνΈ κΆμ₯ μ£ΌκΈ°: 30 ~ 60 seconds
λ³Έ κ³Όμ μ Dead connection μ μ²λ¦¬νκΈ° μν νλμ μ μ°¨λ‘ νμ¬ λ²μ μμλ νκΈ°μ 쑰건μΌλ‘ μ²λ¦¬ν©λλ€.let ticker = 0; setInterval(function() { ticker++; if (ticker % 30 === 7) { console.log('@ras-alive:' + ticker); var alive_session = { "msgtype": "notify", "operation": "ras_alive", "channeltype": "system" }; socket.send(JSON.stringify(alive_session)); } }, 1000);
Session μμ±μ μμ²ν©λλ€. Session idλ κΈ°λ³Έμ μΌλ‘ μλ²μμ μμ±νλ©°, Session id λ₯Ό μ§μ νλ©΄ μ§μ λ μ΄λ¦μΌλ‘ μμ±ν©λλ€.
- Default session id μ message sample:
{ "msgtype":"request", "operation":"create_session", "channeltype":"webrtcaudio", "uuid":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "trxid":"K0000000:1501463079077:00002" }
- Specific session id μ message sample:
{ "msgtype":"request", "operation":"create_session", "channeltype":"webrtcaudio", "sessionid":"abcd", "uuid":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "trxid":"K0000000:1501463079077:00002" }
- Client μμ μκΈ° create_sessionκΉμ§μ μΌλ ¨μ κ³Όμ μ WebSocket ν΄λΌμ΄μΈνΈ μν μμ€ μ°Έκ³ .
Session μ
μ₯μ μμ²ν©λλ€.
μ£Όμ) μλ‘μ΄ Client λ μ΄κΈ° μΈμ¦κ³Όμ μ μ²λ¦¬ν΄μΌλ§ ν©λλ€.
-
β Request join μ μμ²ν©λλ€.
- Message sample:
{ "msgtype":"request", "operation":"join_session", "channeltype":"webrtcaudio", "sessionid":"aaaa", "uuid":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "trxid":"K0000000:1501463079077:00002" }
- Message sample:
{ "msgtype":"reply", "operation":"join_session", "result_cd":200, "result_msg":"Success", "trxid":"K0000000:1501463079077:00002" }
- Message sample:
{ "msgtype":"notify", "operation":"join_session", "sessionid":"aaaa", "channeltype":"webrtcaudio" }
-
β Request destory μ μμ²ν©λλ€.
- Message sample:
{ "msgtype":"request", "operation":"destroy_session", "channeltype":"webrtcaudio", "sessionid":"aaaa", "uuid":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "trxid":"K0000000:1501463079077:00003" }
- Message sample:
{ "msgtype":"reply", "operation":"destroy_session", "result_cd":200, "result_msg":"Success", "trxid":"K0000000:1501463079077:00003" }
- Message sample:
{ "msgtype":"notify", "operation":"destroy_session", "sessionid":"aaaa", "channeltype":"rtcaudio" }
κΈ°λ₯ | Message | λ°νν¨ν΄ μμ |
---|---|---|
μ΄κΈ°νλ©΄ | webapp.home | μ²μμΌλ‘, μ΄κΈ°νλ©΄ |
μλ΄μ νμ°κ²° | webapp.call | μ£Όλ¬Έμ ν, μλ΄μ ν |
λ°λ‘μ£Όλ¬Έ | webapp.order.now | λ°λ‘μ£Όλ¬Έ, μ£Όλ¬Έν΄μ€ |
μνκ²μ | webapp.product.search | <μνλͺ > μν μ°Ύμμ€, <μνλͺ > μν 보μ¬μ€ |
μνμΆμ² | webapp.rec | μΆμ²μν, μνμΆμ²ν΄μ€ |
λ€μλμμλ ΈμΆ | webapp.vod.next | λ€μλ°©μ‘μν, λ€μμκ°μν |
TVνΈμ±ν보기 | webapp.vod.schedule | <μ±λλͺ > νΈμ±ν |
λμλ§ | webapp.help | <μ±λλͺ > λμλ§, <μ±λλͺ > μλ΄ |