socket.io.jsμ 1613νμ λ€μκ³Ό κ°μ΅λλ€.
this.transport = opts.transport || ['ν΄λ§', 'μΉμμΌ'];
['websocket', 'polling'] μμκ° μλ μ΄μ λ 무μμ λκΉ?
λ΄κ°νκ³ μλ ν΄λΌμ΄μΈνΈ μΈ‘μμ :
var μμΌ = io.connect(url);
κ·Έλ° λ€μ μλ² μΈ‘μμ λ€μμ μννμ΅λλ€.
io.on('μ°κ²°', ν¨μ(μμΌ){
console.log(μμΌ);
});
νΈλμ °μ΄ν¬ λΆλΆμ λ€μκ³Ό κ°μ΅λλ€.
handshake:
{ headers:
{ 'user-agent': 'node-XMLHttpRequest',
accept: '*/*',
host: 'localhost:8081',
connection: 'close' },
time: 'Fri Sep 11 2015 16:04:39 GMT-0400 (EDT)',
address: '::ffff:127.0.0.1',
xdomain: false,
secure: false,
issued: 1442001879771,
url: '/socket.io/?EIO=3&transport=polling&t=1442001879749-0&b64=1',
query: { EIO: '3', transport: 'polling', t: '1442001879749-0', b64: '1' } }
μ΄κ²μ μΉ μμΌ λμ ν΄λ§μ μ¬μ©νκ³ μμμ μλ―Έν©λκΉ?
μ μ‘μ 'websocket'μΌλ‘ λͺ
μμ μΌλ‘ μ€μ νλ €κ³ μλνλλ° νΈλμ
°μ΄ν¬ λΆλΆμ΄ λ€μκ³Ό κ°μ΄ μ¬λ°λ₯΄κ² λ³κ²½λμμ΅λλ€.
var μμΌ = io.connect(url,{transport:['μΉ μμΌ']});
handshake:
{ headers:
{ connection: 'Upgrade',
upgrade: 'websocket',
host: 'localhost:8081',
origin: 'localhost:8081',
'sec-websocket-version': '13',
'sec-websocket-key': 'MTMtMTQ0MjAwMTUxNDcyNA==' },
time: 'Fri Sep 11 2015 15:58:34 GMT-0400 (EDT)',
address: '::ffff:127.0.0.1',
xdomain: true,
secure: false,
issued: 1442001514739,
url: '/socket.io/?EIO=3&transport=websocket',
query: { EIO: '3', transport: 'websocket' } }
+1
λλ "μ
κ·Έλ μ΄λ"λ³΄λ€ "λ€μ΄κ·Έλ μ΄λ"λΌλ κ°λ
μ μ νΈν©λλ€. νμ¬ λλΆλΆμ λΈλΌμ°μ λ μΉ μμΌμ μ μ§μν©λλ€. μ²μμ μΉ μμΌκ³Ό μ°κ²°νλ©΄ μ±λ₯μ΄ ν₯μλκ³ λ¦¬μμ€κ° μ μ½λ©λλ€.
upgrade
μ μ΄μ λ λ€μκ³Ό κ°μ΅λλ€.
Socket.IOλ μ€μ λ‘ WebSocketμ΄ μλνμ§ μμ κ°λ₯μ±μ΄ λκΈ° λλ¬Έμ WebSocketμ΄ μλν κ²μ΄λΌκ³ κ°μ νμ§ μμ΅λλ€. λμ XHR λλ JSONPμ μ¦μ μ°κ²°μ μ€μ ν λ€μ WebSocketμΌλ‘ μ°κ²° μ κ·Έλ μ΄λλ₯Ό μλν©λλ€. μκ° μ΄κ³Όμ μμ‘΄νλ ν΄λ°± λ°©λ²κ³Ό λΉκ΅ν λ μ΄λ μ¬μ©μ μ€ λꡬλ κ²½νμ΄ μ νλμ§ μμμ μλ―Έν©λλ€.
@nkzawa
μ
κ·Έλ μ΄λ μ κ·Ό λ°©μμ΄ μ νΈλλ μ΄μ λ₯Ό μ΄ν΄νκ³ μμΌλ©° μ΄λ λ§€μ° μ’μ κΈ°λ₯μ
λλ€.
κ·Έλ¬λ νμ νμν κ²μ μλλλ€. ν΅μ λ μν°νλΌμ΄μ¦ νκ²½μμλ λ€μ΄κ·Έλ μ΄λ μ κ·Ό λ°©μμ΄ λ ν©λ¦¬μ μ΄λ©° μΉ μμΌμ νμ©λλ μ μΌν μ μ‘μΌλ‘ κ°μ νλ κ²μ΄ μ±λ₯μ μ΅μ ννλ κ°μ₯ μ’μ λ°©λ²μ΄λΌκ³ λ§νκ³ μΆμ΅λλ€.
μ΄ μ΅μ
μ μ λ¬νμ¬ ν΄λΌμ΄μΈνΈμ μλ² λͺ¨λμμ μΉ μμΌμΌλ‘ κ°μ μ μ‘μ μλνμ΅λλ€.
{ transports: ["websocket"] }
μ΄κ²μ μλνλ κ² κ°κ³ μλ²μ λν μΉ μμΌ μ°κ²°μ νλλ§ μμ§λ§ λͺ¨λ μλμμ λΆλͺ
ν μ€ν¨νλ ν΄λ§λ μνλκ³ μμμ μμμ΅λλ€.
Request URL:http://localhost:4000/socket.io/?EIO=3&transport=polling&t=L8RaD0p
{ code: 0, message: "Transport unknown" }
νμ¬ μ΄ μ κ·Έλ μ΄λ μ κ·Ό λ°©μμ λ€μ΄κ·Έλ μ΄λλ‘ λ³κ²½ν μ μλ μ€ν κ°λ₯ν μ루μ μ΄ μμ΅λκΉ?
μ κ²½ μ°μ§ λ§μΈμ. λ΄κ° socket.ioλ₯Ό μ¬μ©ν λ€λ₯Έ ν΄λμ€μμ μΆκ° ν΄λ§μ μνν κ²μ λ΄ μ½λμμ΅λλ€. λ°λΌμ μ°κ²°ν λ μΉ μμΌμΌλ‘μ μ μ‘μ μ ννλ optsλ₯Ό μ¬μ©νλ©΄ μνλ λλ‘ μνλ©λλ€.
@sirudog
λ€μμ μλν μ μμ΅λλ€. { Transports: ['websocket', 'polling'] }
@poppowerlb2 μκ² κ°μ¬λ립λλ€(λ΄ λ€νΈμν¬ νμμ κ·Έμ κ°μ νΈλν½μ΄ λ μ΄μ μμ΅λλ€). λ΄ λΈλΌμ°μ κ° μ΅μ λ²μ μ΄λλΌλ socket-io-clientκ° ν΄λ§μ μ νΈνλ€λ κ²μ μ μ μμ΅λλ€.
μ΄ μ κ·Έλ μ΄λ μ κ·Ό λ°©μμ μΌλΆ μλ²λ₯Ό μ μΈνμ§ μμ΅λκΉ? node-red μλ²μμ socket.ioλ₯Ό μ¬μ©νλ €κ³ νλλ° μμ§ μ°κ²°μ μ€μ ν μ μμ΅λλ€. λ¬Όλ‘ μΌλ° μΉ μμΌμμλ μ μλν©λλ€.
λν ν΄λ§μ΄ μλνμ§ μλλΌλ socket.ioκ° μΉ μμΌμ μλνλ κ²μ΄ λ°λμ§νλ€κ³ μκ°ν©λλ€.
+1
λλ "μ κ·Έλ μ΄λ"λ³΄λ€ "λ€μ΄κ·Έλ μ΄λ"λΌλ κ°λ μ μ νΈν©λλ€. νμ¬ λλΆλΆμ λΈλΌμ°μ λ μΉ μμΌμ μ μ§μν©λλ€. μ²μμ μΉ μμΌκ³Ό μ°κ²°νλ©΄ μ±λ₯μ΄ ν₯μλκ³ λ¦¬μμ€κ° μ μ½λ©λλ€.
`
const client = io('https://io.yourhost.com', { // κ²½κ³ : μ΄ κ²½μ° κΈ΄ ν΄λ§ μ μ‘μ λν ν΄λ°±μ΄ μμ΅λλ€. [ 'websocket' ] // λλ [ 'websocket', ' polling' ], κ°μ κ²})
κ°μ₯ μ μ©ν λκΈ
+1
λλ "μ κ·Έλ μ΄λ"λ³΄λ€ "λ€μ΄κ·Έλ μ΄λ"λΌλ κ°λ μ μ νΈν©λλ€. νμ¬ λλΆλΆμ λΈλΌμ°μ λ μΉ μμΌμ μ μ§μν©λλ€. μ²μμ μΉ μμΌκ³Ό μ°κ²°νλ©΄ μ±λ₯μ΄ ν₯μλκ³ λ¦¬μμ€κ° μ μ½λ©λλ€.