Socket.io-client: io.Manager์™€ io.Socket์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2018๋…„ 06์›” 22์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: socketio/socket.io-client

๋‚˜๋Š” socket.io-client์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์€ ํ›„์—๋„ io.Manager์™€ io.Socket์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ io ()์—์„œ ์ƒˆ ์†Œ์ผ“์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ด€๋ฆฌ์ž ์ธ์Šคํ„ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ•œํŽธ ๊ด€๋ฆฌ์ž์˜ ์ด๋ฒคํŠธ์™€ ์†Œ์ผ“์˜ ์ด๋ฒคํŠธ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

question

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

์˜ˆ, ๋ฌธ์„œ๊ฐ€์ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ๋ฌด์—‡์ด ๋…ํŠนํ•˜๊ณ  ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

+1

+1

์˜ˆ, ๋ฌธ์„œ๊ฐ€์ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ๋ฌด์—‡์ด ๋…ํŠนํ•˜๊ณ  ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์‹œ๋„ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Œ€๋ถ€๋ถ„์˜ ๊ด€๋ฆฌ์ž ์†์„ฑ์€ io ์กฐ๊ฐ์— ์ง์ ‘ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ
socket = io( 'http://192.168.2.2:8088' + Param.chatNamespace + '?parammmm=1', { query: { key: 'Michael' }, path: Param.path, transports: ['websocket'], autoConnect: false, // like this, could be found in manager piece } );
์ด๊ฒƒ์ด ์ œ๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋„

์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • io (URL, ์˜ต์…˜)
  • io.connect (URL, ์˜ต์…˜)

๊ทธ๋ฆฌ๊ณ  ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ :

  • ์ƒˆ ๊ด€๋ฆฌ์ž (URL, ์˜ต์…˜)

๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋งค์šฐ ์ƒ์„ธํ•˜์ง€๋งŒ ์ฐจ๊ฐ€์šด ์„ค๋ช…์„ ์ œ์™ธํ•˜๊ณ  ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‚ด ๋ธŒ๋ผ์šฐ์ €์˜ ํด๋ผ์ด์–ธํŠธ HTML ํŽ˜์ด์ง€์—์„œ socket.io ๋˜๋Š” socket.io-client๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งŽ์€ ์ž‘์—…์ด ์ง„ํ–‰๋œ ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์™„์ „ํžˆ ๋™์˜ ํ•ด. ๊ด€๋ฆฌ์ž์™€ ์†Œ์ผ“ ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+1,

+1

๋ฉ˜ !! ๊ทธ๋ž˜์„œ ์•„์ง ์ด๊ฒƒ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์—†์Šต๋‹ˆ๊นŒ ??? wth์ฒ˜๋Ÿผ !!

์•ˆ๋…•ํ•˜์„ธ์š”! ์—ฌ๊ธฐ ์™€ ์—ฌ๊ธฐ์— ๊ด€๋ฆฌ์ž ๋ฐ ์†Œ์ผ“ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€

Manager๋Š” (WebSocket ๋˜๋Š” HTTP ๊ธด ํด๋ง๊ณผ ๊ฐ™์€ ์ „์†ก์„ ์‚ฌ์šฉํ•˜์—ฌ) ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ํ•˜์œ„ ์ˆ˜์ค€ ์—”์ง„ ์ธ Engine.IO ํด๋ผ์ด์–ธํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
Manager๋Š” ์žฌ ์—ฐ๊ฒฐ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋‹จ์ผ ๊ด€๋ฆฌ์ž๋Š” ์—ฌ๋Ÿฌ ์†Œ์ผ“์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Socket์€ ์„œ๋ฒ„์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ์œ„ํ•œ ๊ธฐ๋ณธ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์†Œ์ผ“์€ ํŠน์ • ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค (๊ธฐ๋ณธ์ ์œผ๋กœ /)์— ์†ํ•˜๋ฉฐ ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ด€๋ฆฌ์ž ์ธ์Šคํ„ด์Šค๋Š” io() ์‹คํ–‰ํ•  ๋•Œ ์•”์‹œ ์ ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์†Œ์ผ“์˜ io ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๋ฉด ์žฌ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค ( forceNew ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ).

const socket = io();
const socket2 = io("/test2");
// socket.io === socket2.io
const socket3 = io("/test3", { forceNew: true }); // new manager
// socket.io !== socket3.io

์ด๋ฒคํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ ์ด๋ฒคํŠธ๋Š” ์—ฐ๊ฒฐ ์ƒํƒœ์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ๊ด€๋ฆฌ์ž ๋ฐ ๊ด€๋ จ ์†Œ์ผ“ ๋ชจ๋‘์—์„œ ๋‚ด ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  • connect_error
  • connect_timeout
  • ๋‹ค์‹œ ์—ฐ๊ฒฐ
  • ๋‹ค์‹œ ์—ฐ๊ฒฐ
  • reconnect_error
  • reconnect_failed
  • ํ•‘
  • ํƒ๊ตฌ

Socket์€ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ๋‚ด ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  • ์ž‡๋‹ค
  • ๋ถ„๋ฆฌ
  • ์˜ค๋ฅ˜

๊ทธ๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•œ ์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ์ง€์—ฐ๋˜์–ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

@darrachequesne ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. io(url, options) ์™€ (๊ณผ)์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
io.connect(url, options) ์ œ๋ฐœ? ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ๋‘˜ ๋‹ค ์†Œ์ผ“ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋„

์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • io (URL, ์˜ต์…˜)
  • io.connect (URL, ์˜ต์…˜)

๊ทธ๋ฆฌ๊ณ  ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ :

  • ์ƒˆ ๊ด€๋ฆฌ์ž (URL, ์˜ต์…˜)

๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋งค์šฐ ์ƒ์„ธํ•˜์ง€๋งŒ ์ฐจ๊ฐ€์šด ์„ค๋ช…์„ ์ œ์™ธํ•˜๊ณ  ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‚ด ๋ธŒ๋ผ์šฐ์ €์˜ ํด๋ผ์ด์–ธํŠธ HTML ํŽ˜์ด์ง€์—์„œ socket.io ๋˜๋Š” socket.io-client๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งŽ์€ ์ž‘์—…์ด ์ง„ํ–‰๋œ ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

io(url, options) ์™€ io.connect(url, options) ๊ฐ€ ๋ชจ๋‘ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L15
module.exports = exports = lookup;

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L85
exports.connect = lookup;

์ž, ๊ฐ™์€ ์ผ์„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด์žˆ๋Š” ์ด์œ ๋Š” ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค ... : smile :. 2012 ๋…„๋ถ€ํ„ฐ๋Š” https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2 ์ดํ›„๋กœ ๋ณด์ž…๋‹ˆ๋‹ค connect() ๊ฐ€ v3์—์„œ ์ œ๊ฑฐ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž ์ƒ์„ฑ์ž์™€ ๊ด€๋ จํ•˜์—ฌ ๊ณต์šฉ API์—์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜:

const socket = io("ws://example.com/my-namespace", {
  reconnectionDelayMax: 10000,
  query: {
    auth: "123"
  }
});

// is the same as
const manager = new Manager("ws://example.com", {
  reconnectionDelayMax: 10000
});
const socket = manager.socket("/my-namespace", {
  query: {
    auth: "123"
  }
});

๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค : https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

์ด์ œ ๋” ๋ช…ํ™• ํ•ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๊ด€๋ฆฌ์ž์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ fe์—์„œ๋„ ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์•„๋ž˜์—์žˆ๋Š” ์ „์—ญ ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์†Œ์ผ“ ์ธ์Šคํ„ด์Šค๋ฅผ ์™„์ „ํžˆ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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