μΊ‘μ€ν€ νλ‘μ νΈλ₯Ό μ§ννλ©° νμν΅νλ₯Ό μν΄ WebRTCλ₯Ό μ¬μ©νκ² λμλ€. λλ κ΄λ ¨ κ°μλ λ€μ΄λ΄€μ§λ§ WebRTCλ₯Ό νλ‘μ νΈμ μ μ©νλ κ²μ μ²μμ΄μμ§λ§, κ°μμ ꡬκΈλ§μ λμμΌλ‘ νμν΅ν κΈ°λ₯ ꡬνμ μ±κ³΅νλ€. κ·Έλ¬λ...
μλ μ½λκ° μμΌ κΈΈμ΄?!? μ λ§ λͺ» λ΄μ£Όκ² λ€!!!!!
리μ‘νΈλ₯Ό μ¬μ©νλ©΄μ μ¬μ¬μ©μ±μ 0μ΄κ³ μ¬μ§μ΄ μ½κΈ°λ μ΄λ €μ΄ λν°μ½λλ μ°Έμ μ μμ΄μ, WebRTC κ΄λ ¨ λ‘μ§μ μ΄λ»κ² λΆλ¦¬ν κΉ κ³ λ―Όνλ€. μΌλ¨ μλλ κΈ°μ‘΄μ μ½λλ€. μ°Έκ³ λ‘ μ΄ ν¬μ€ν μμ μ½λλ κ·Έλ₯ μ€μνμ§ μμΌλ κ΅³μ΄ λ€ μ½μ νμ μλ€.
λΉμ νμν 리ν©ν λ§μ λ κ°μ§μλ€.
let
μ¬μ©μ μ§μνμWebRTC
κ΄λ ¨ μ½λμ socket
μ μ΄λ²€νΈ 리μ€λλ₯Ό λΆλ¦¬νμμ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μλ°μ€ν¬λ¦½νΈμ Class
λ₯Ό μ΄μ©νκΈ°λ‘ νλ€.
ν΄λμ€λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ νΉμ κ°μ²΄λ₯Ό μμ±νκΈ° μν΄ λ³μμ λ©μλλ₯Ό μ μνλ μΌμ’ μ νλ‘, κ°μ²΄λ₯Ό μ μνκΈ° μν μν(λ©€λ² λ³μ)μ λ©μλ(ν¨μ)λ‘ κ΅¬μ±λλ€.
μ²μμ ν΄λμ€μ constructorλ‘ peerConnection, socket, roomIdλ₯Ό μ΄κΈ°ννκ³ , κΈ°μ‘΄μ λ‘μ§μ λ©μλλ‘ λ§λ€μλ€. κ²°κ³Όλ λ€μκ³Ό κ°λ€.
μ΄μ λλ€!! ν΄λμ€λ₯Ό μ΄μ©ν΄ λ‘μ§μ λΆλ¦¬νμΌλ μ½λλ κΉλν΄μ‘κ³ , κΈ°λ₯λ μ λμκ°κ² μ§? λΌκ³ μκ°νμ λ this = undefined
λΌλ μλ¬κ° λ°μνλ€.
κ°μ²΄ λ©μλκ° κ°μ²΄ λ΄λΆκ° μλ λ€λ₯Έ κ³³μ μ λ¬ ν νΈμΆλμ΄ thisκ° μ¬λΌμ§ κ²μ΄λ€. 컨νμ€νΈλ₯Ό μμ΄λ²λ¦° this
λ λΉμ°νκ²λ undefined
κ° λμλ€.
컨νμ€νΈλ₯Ό μ μ§νκΈ° μν΄μ ν¨μ λ°μΈλ©μ ν΄μΌ νλ€.
bind() λ©μλκ° νΈμΆλλ©΄ μλ‘μ΄ ν¨μλ₯Ό μμ±νλ€. λ°κ²λλ 첫 μΈμμ valueλ‘λ this ν€μλλ₯Ό μ€μ νκ³ , μ΄μ΄μ§λ μΈμλ€μ λ°μΈλλ ν¨μμ μΈμμ μ 곡λλ€.
let user = {
firstName: "John"
};
function func() {
alert(this.firstName);
}
let funcUser = func.bind(user);
funcUser(); // John
μ΄λ₯Ό μ΄μ©ν΄ μμ±μ ν¨μμμ λ©μλλ₯Ό λͺ μμ μΌλ‘ binding ν μ μλ€. λ€λ§ λ°μΈλ©μ΄ νμν ν¨μλ₯Ό λ§€λ² μμ±μ ν¨μμ μΆκ°ν΄μΌ νλ λ¨μ μ΄ μλ€.
λν ν¨μλ₯Ό νΈμΆν λ binding ν μ μλ€. μ΄ λ°©λ²μ κ°λ μ±μ΄ λ¨μ΄μ§λ λ¨μ μ΄ μλ€.
νμ΄ν ν¨μμλ thisκ° μλ€
νμ΄ν ν¨μμλ thisκ° μκΈ° λλ¬Έμ, ν΄λμ€ λ΄λΆ λ©μλλ₯Ό νμ΄ν ν¨μλ‘ μ μνλ€λ©΄ μμ±μμ λν΄ κ΄λ¦¬ν νμκ° μλ€.
λμ thisκ° μκΈ° λλ¬Έμ νμ΄ν ν¨μλ μμ±μ ν¨μ(new
)λ‘ μ¬μ©ν μ μλ€λ μ μ½μ΄ μλ€λ κ²μ λͺ
μ¬νμ.
μΈ κ°μ§μ λ°©λ² μ€ λλ ν΄λμ€ λ΄λΆ λ©μλλ₯Ό νμ΄ν ν¨μλ‘ μ μνκΈ°λ₯Ό μ ννλ€. μ΅μ’ μ½λλ λ€μκ³Ό κ°λ€.
WebRTC κ΄λ ¨ μ½λμ socketμ μ΄λ²€νΈ 리μ€λλ₯Ό Classλ‘ μΆμνν¨μΌλ‘μ¨, κΈ°μ‘΄λ³΄λ€ μ½λ κ°λ
μ±μ΄ μ’μμ‘λ€.
νλ‘ νΈμλ 곡λΆλ₯Ό 리μ‘νΈλ‘ νλ‘μ νΈμ μ°Έμ¬νλ κ²μΌλ‘ μμν΄, μλ°μ€ν¬λ¦½νΈλ‘ νλ‘μ νΈλ₯Ό μ§νν μ μ΄ μμλ€. κ·Έλ κΈ°μ μλ°μ€ν¬λ¦½νΈ 곡λΆμ ν¨μ©μ±μ λλΌκΈ° μ΄λ €μ λ€. λ‘μ§μ ν΄λμ€λ‘ μΆμννλ κ²½νμ ν΅ν΄μ λλΆμ μλ°μ€ν¬λ¦½νΈμ λν΄ λ§μ κ΄μ¬μ΄ μκ²Όλ€. μμΌλ‘ μλ°μ€ν¬λ¦½νΈ κ³΅λΆ μ΄μ¬ν ν΄μΌμ₯~!!
λͺ¨λ μλ°μ€ν¬λ¦½νΈ νν 리μΌ
μμΈν μ½λλ githubμμ νμΈν μ μλ€
μ λ΄€μ΅λλ€. μ’μ κΈ κ°μ¬ν©λλ€.