Socket.io: ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์™€์ผ๋“œ์นด๋“œ ์ง€์› ์ถ”๊ฐ€

์— ๋งŒ๋“  2011๋…„ 07์›” 29์ผ  ยท  130์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: socketio/socket.io

์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

client.on("*", function(data) {

}
enhancement

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

์–ด๋–ป๊ฒŒ ์ง€๋‚ด์š”?
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ on("*", function () { ์— +1

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

๋™์˜ํ–ˆ๋‹ค.

์ด๋ฒคํŠธ์ด๋ฏธํ„ฐ2

+1
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ๊ทธ๋ ‡์ง€ ์•Š์€ ํ•ญ๋ชฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋˜ ๋‹ค๋ฅธ ์˜์กด์„ฑ
  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ฐ˜์˜ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์ฝ”๋“œ?)
  • ํŠน์ • ์ด๋ฒคํŠธ ์ „์— catchall์„ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋˜๋Š” ์ •์˜ ์ˆœ์„œ๋Œ€๋กœ? ์„ค๋ช… ํ•„์š”
  • ๋™๊ธฐํ™” ๋™์ž‘๋งŒ -- ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ _async_ ํ•„ํ„ฐ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„๊นŒ์š”?

+1

๋™๊ธฐํ™” ๋™์ž‘๋งŒ -- ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋น„๋™๊ธฐ ํ•„ํ„ฐ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์ง€ ์•Š์„๊นŒ์š”?
@dvv

๋‚˜๋Š” ์ด ์•„์ด๋””์–ด์— ๊ฝค ๊ด€์‹ฌ์ด ์žˆ๋‹ค.

์ผ๋ถ€ EE2 ์„ ํƒ์€ ๋‚ด๊ฐ€ ์ด์ƒ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ์ง€๋งŒ "*"๋งŒ ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ด์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด๋ฅผ +1ํ•ฉ๋‹ˆ๋‹ค.

์ง„์ •ํ•œ ์˜๋ฏธ์˜ ํฌ๊ด„: manager.on("event", function(client, event, data) {} -- ๋˜ํ•œ โ€‹โ€‹ํด๋กœ์ € ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

catchall ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ €ํ•ญ์€ ๊ธฐ์–ต๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ์œ ์ผํ•œ ๋…ผ์Ÿ์€ "*"๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด .addGlobalListener()์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€์˜€์Šต๋‹ˆ๋‹ค.

+1
๋‚˜ ์—ญ์‹œ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ํŠน์ • ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋กœ๊น… ๋ชฉ์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Socket.io ๋กœ๊ฑฐ๋Š” ํ˜„์žฌ ๋งค์šฐ ๋…์„ ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ฝ˜์†”์—๋งŒ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
dvv -s ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.
์‚ฌ์‹ค dvv์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์ด๋ฒคํŠธ๋ฅผ ํŠน์ • ํ•ธ๋“ค๋Ÿฌ์— ์ „๋‹ฌํ•˜๊ณ  ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์›€์ง์—ฌ์ฃผ์„ธ์š” :)
์ด ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์Œ, ์ข‹์•„, ๋ฐฉ๊ธˆ ๋‚ด ํฌํฌ์˜ ๋ถ„๊ธฐ์— EE2๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/einaros/socket.io/commit/2107ff00f3ddf2d781d3e3c3b7dfb1fc990f7ec5

๋ธŒ๋žœ์น˜๋Š” https://github.com/einaros/socket.io/commits/ee2์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐ์€ ๊ฐ€์žฅ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

EE2๊ฐ€ ์ด์ƒํ•œ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ์ œ๊ฑฐํ•˜๊ณ  .on('*') ์ถ”๊ฐ€ํ•˜๋ฉด

๋‚˜๋Š” EE2์—์„œ -1์ด์•ผ

์ฝ”๋“œ์— ๋” ๋งŽ์€ ๋ถ€ํ’€๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋„ ์ด๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” 11.8KB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฐฐ์†กํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค(์•ฝ 3.5kb ์ถ•์†Œ). ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๊ฐ€์˜ค๋Š” ๋ชจ๋ฐ”์ผ ์‹œ์žฅ๊ณผ ํ•จ๊ป˜ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋ฐ”์ดํŠธ๋ฅผ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‹จ์ง€ ์™€์ผ๋“œ์นด๋“œ/์บ์น˜ ๋ชจ๋“  ๋ฆฌ์Šค๋„ˆ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ด๋ผ๋ฉด.. ๊ทธ๋Ÿฐ ๋‹ค์Œ all ๋ฆฌ์Šค๋„ˆ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํ˜ธ์ถœ์„ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ์กด ๋ฐฉ์ถœ ํ•จ์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 3 - 5 LOC ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(์ฃผ์„ ์ œ์™ธ ;)). ๊ทธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ๊ธฐ๋ณธ ์„ค์ • ์ž ๊ธˆ ๋’ค์— ์ˆจ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค. EventEmitting์€ ํ•ซ ์ฝ”๋“œ ๊ฒฝ๋กœ์ด๋ฉฐ ํ•ญ์ƒ ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์ ์ด๊ณ  ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

catch-all์€ ํ™•์‹คํžˆ ๋” ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ทธ ํ›„์— ์ด๋ฒคํŠธ๋ฅผ ์ผค ์ˆ˜ ์žˆ์„ ๋งŒํผ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์™€์ผ๋“œ ์นด๋“œ ๋˜๋Š” EE2์— ๋Œ€ํ•ด์„œ๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์ง€๋งŒ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€๋กœ์ฑ„๋Š” ๋ฐฉ๋ฒ•์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

EE2 ...๊ฐ€ .on('*')์„ ์ถ”๊ฐ€ํ•˜๋ฉด +1

TJ ๋ฏธ์นœ ํ˜•...

server.on('foo.*', function(value1, value2) {
  console.log(this.event, value1, value2);
});

๊ทธ๊ฒƒ์€ EE2์˜ README์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ "ํ›„." ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

EE2๊ฐ€ ์ด์ƒํ•œ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ์ œ๊ฑฐํ•˜๋ฉด

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค.

@pyrotechnick the EE2 .on('*') ๋Š” ํฌ๊ด„์ ์ธ iirc๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

* ๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๋งน๋ชฉ์ ์œผ๋กœ ํฌ์ฐฉํ•œ๋‹ค๋Š” ์ ์—์„œ catch-all์ด ์•„๋‹ˆ์ง€๋งŒ * ํŒจํ„ด์ด ๋ชจ๋“  ์ฑ„๋„๊ณผ ์ผ์น˜ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํฌ์ฐฉํ•ฉ๋‹ˆ๋‹ค.

๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ‹€๋ ธ์–ด. ๋„ค๊ฐ€ ์˜ณ์•„...

{EventEmitter2} = require 'eventemitter2'

emitter = new EventEmitter2 wildcard: on

emitter.on '*', ->
  console.log <strong i="6">@event</strong>, arguments...

emitter.emit 'foo'
emitter.emit 'foo.bar'
isabel:hydrogen pyrotechnick$ coffee test.coffee 
foo

๋‚˜๋Š” ์™€์ผ๋“œ ์นด๋“œ์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฑฐ์˜ ์ด ๋™์ž‘์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์™€์ผ๋“œ์นด๋“œ/"๋„ค์ž„์ŠคํŽ˜์ด์Šค" ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ๋•Œ ๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ ๋‚˜๋ฅผ ์Šฌํ”„๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. JavaScript๋Š” ํŒจํ„ด์„ ์ผ์น˜์‹œํ‚ค๋Š” ํ™˜์ƒ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์€ //์— ์žˆ๊ฑฐ๋‚˜ RegExp ๋ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋Š๋ฆฐ๊ฐ€์š”?

์ด๊ฒƒ์˜ ์ค‘์š”์„ฑ์„ ๋‹ค์‹œ +1ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ์ด๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์—ฌ๊ธฐ์— ์†”๋ฃจ์…˜์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. http://stackoverflow.com/questions/8832414/overriding-socket-ios-emit-and-on/8838225

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

์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ •๊ทœ์‹ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ๋™์‚ฌ์™€ ๋ช…์‚ฌ์˜ ๋ฒ”์œ„๋ฅผ ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šˆํผ ๊ธ€๋กœ๋ฒŒ ๋ฐฉ๋ฒ•์„ ์ข‹์•„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

io.set('global_listener', function(๋„ค์ž„์ŠคํŽ˜์ด์Šค, ์ด๋ฒคํŠธ, ์ธ์ˆ˜, ๋ฐฉ์ถœ){
// ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฒคํŠธ ๋ฐ ์ธ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์—… ์ˆ˜ํ–‰
// ํ•ด๋‹น ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ ํ•ด๋‹น ์ด๋ฒคํŠธ์™€ ์—ฐ๊ฒฐ๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด emit()์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
});

io.set('global_authorization', function(๋„ค์ž„์ŠคํŽ˜์ด์Šค, ํ•ธ๋“œ์…ฐ์ดํฌ ๋ฐ์ดํ„ฐ, ์ฝœ๋ฐฑ){
// ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ handshakeData ๊ธฐ๋ฐ˜ ์—ฐ๊ฒฐ ์ˆ˜๋ฝ ์—ฌ๋ถ€
});

catch-all์„ ์ง€์›ํ•˜๋Š” ์ด๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ผ. socket.on("*") , ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž‘์—…ํ–ˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ UI Kit์—์„œ @visionmedia ์˜ ์ด๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ ธ https://github.com/HenrikJoreteg/wildemitter

@HenrikJoreteg
https://github.com/component/emitter์— ๊ธฐ๋ณธ์ ์œผ๋กœ '*'๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๋˜ํ•œ ์ด ์ด๋ฏธํ„ฐ๋Š” ๋‹ค์Œ socket.io์— ์ „์›์„ ๊ณต๊ธ‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. off removeListener ๋ฐ”๋กœ ๊ฐ€๊ธฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ์ข‹์Šต๋‹ˆ๋‹ค. :D

์˜ค, ๊ต‰์žฅํ•˜๋‹ค!

+1

++

+1

+1

+1

+1

+=1

+1

+1

+1

+1

์•„๋ฌด๋„ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•„์ง ์ผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์ข…๋ฅ˜์˜ ํ”์ ?

์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ชฉ์ ์— ์ถฉ๋ถ„ํžˆ ์ž˜ ์ž‘๋™ํ•˜๋Š” _์ผ์ข…์˜_ ์†”๋ฃจ์…˜์ด ์žˆ์ง€๋งŒ ์™„์ „ํ•œ ์™€์ผ๋“œ์นด๋“œ ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค... '*'์˜ ๊ตฌํ˜„์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

https://github.com/Attorney-Fee/socket.io

+1

+1

+1

+1

+1

+1

์˜๋ฏธ์žˆ๋Š” ๊ธฐ์—ฌ๊ฐ€ ์—†๋Š” ๋Œ“๊ธ€์„ ๋‚จ๊ธฐ๊ธด ์‹ซ์ง€๋งŒ 2๋…„ ์ „๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•˜๊ณ  ์ด๋ฏธ ๊ฑด์„ค์ ์ธ ๋‚ด์šฉ์€ ๋ชจ๋‘ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ...

+1

์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž ์˜์—ญ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ์›์ˆญ์ด ํŒจ์น˜ ์—†์ด ์ด๋ฒคํŠธ ์ด๋ฏธํ„ฐ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ›„ํฌ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๋•๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋ณธ ๋ชจ๋“  ์†”๋ฃจ์…˜์—๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ถ„๊ธฐ๊ฐ€ ํฌํ•จ๋˜๋ฉฐ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ชจ๋‘ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ˆœํ•˜๊ณ  ๋‹จ์ˆœํ•œ "ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์ ˆ๋Œ€์ ์œผ๋กœ ์žก์•„๋ผ"๋งŒ ํ•„์š”ํ•˜์ง€๋งŒ RegEx ์ง€์›์€ (์†Œ์Šค๋ฅผ ๋„ˆ๋ฌด ์ž์„ธํžˆ ๋ณด์ง€ ์•Š์€ ์‚ฌ๋žŒ์—๊ฒŒ) ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ๋ณด์ด์ง€ ์•Š๊ณ  ํ™•์‹คํžˆ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. . ์ €๋Š” Express.JS ๊ฒฝ๋กœ์—์„œ ํ•ญ์ƒ ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. socket.io์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ „์†ก ๊ณ„์ธต/ํ”„๋กœํ† ์ฝœ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ง€๋„ ์กฐํšŒ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณด๋‹ค ํฌ๊ด„์ ์ธ(์ •๊ทœ ํ‘œํ˜„์‹ ๊ธฐ๋ฐ˜) ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์–‘์ชฝ ๋์—์„œ '๋ฐฉ์ถœ'์„ ์žฌ์ •์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ๊ตฌํ˜„ ์ œ์•ˆ:

  • ์ด๋ฒคํŠธ ์ด๋ฆ„์— '*'๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ •๊ทœ์‹์— ๋Œ€ํ•œ ํŠน์ˆ˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด on ์žฌ์ •์˜
  • emit ๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ๋จผ์ € ๋น ๋ฅธ ๊ฒฝ์šฐ(์ผ๋ฐ˜ ๋งต ์กฐํšŒ)๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ '*' ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ํฌํฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ›„ํฌ๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ์›์ˆญ์ด ํŒจ์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์†”๋ฃจ์…˜์„ ์ž ์žฌ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ํฐ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๊ถ๊ธˆํ•ด์„œ userland์—์„œ socket.Manager.prototype.onClientMessage๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์—ˆ๋‚˜์š”?

๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒํ–ˆ๊ณ  ๋…ธ๋“œ์—์„œ socket.io ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ์˜ˆ์˜์ง€ ์•Š๊ณ  ๋ถ€์„œ์ง€๊ธฐ ์‰ฝ์ง€๋งŒ ์ ์–ด๋„ ํฌํฌ๋Š” ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://gist.github.com/lmjabreu/5714985

socket.io๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ์ „์— ๋‹จ์ˆœํžˆ process.EventEmitter = require('eventemitter2').EventEmitter2 ์–ด๋”˜๊ฐ€์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

ํ”„๋กœํ† ํƒ€์ž…์„ ์—ฌ๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ์‚ฌ์šฉ์ž ์˜์—ญ ์ˆ˜์ •์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์™„์ „ํ•œ ์ •๊ทœ์‹ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ฑฐ๋‚˜ ๋‹จ์ˆœํ•œ socket.on('*')์ด ๋จผ ๊ธธ์„ ๊ฐˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์ด ํ‹ฐ์ผ“์€ ์ด์ œ 2๋…„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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

์–ด๋–ค ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๊ฒƒ์— ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฑฐ์˜ ๋ชจ๋“  ์˜๊ฒฌ์— ๋™์˜ํ•˜์ง€๋งŒ ๋ฉ‹์ง„ ๊ฒƒ์€ ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์ ์ง€๋งŒ ํฌ๊ด„์ ์ธ ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ ˆ์ฐจ๊ฐ€ ๋” ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ์œ ๊ฐ์ž…๋‹ˆ๋‹ค.

์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ๋ˆ„๊ตฐ๊ฐ€ ๊ฒŒ์‹œํ•œ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
http://stackoverflow.com/questions/8832414/overriding-socket-ios-emit-and-on/8838225

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :)

+1

๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•œ ๊ฒƒ์— ์›์ˆญ์ด ํŒจ์น˜๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋‚˜์œ ์Šต๊ด€์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ํฐ ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Backbone.Events ์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๊ฒƒ์€ ์ด ๋ฌธ์ œ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š”. (๋ฐฑ๋ณธ์€ "*"๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ „์—ญ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด "๋ชจ๋‘"๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์›๋ž˜ ํ˜ธ์ถœ๋œ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค). (๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์ œ์•ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค) =)

๊ฐœ์ธ์ ์œผ๋กœ RegExp ๋ฐฉ์‹์— +1, "*" ์™€์ผ๋“œ ์นด๋“œ์™€ ๋น„๊ตํ•  ๋•Œ ๋” ๋งŽ์€ Javascript์™€ ๋” ์ ์€ ์ฝ˜์†”์„ ๋Š๋‚๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ตœ๊ทผ์˜ ๋ชฉ์†Œ๋ฆฌ๋“ค์ฒ˜๋Ÿผ ์บ์น˜์˜ฌ ๊ธฐ๋Šฅ์ด ๋” ์ ํ•ฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

์ด๊ฒƒ์ด ์‹ค์ œ๋กœ socket.io ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

IMO๋ฅผ ๋น„๋‚œํ•˜๋Š” ๋™๊ฒฐ๋œ API.

:+1:

๋ˆ„๊ตฐ๊ฐ€ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ  0.9.x ๋ฐ 1.0.0์—์„œ ์™€์ผ๋“œ์นด๋“œ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ: https://www.npmjs.org/package/socketio-wildcard

๋ฉ‹์ง€๋‹ค @geoah !

@guille hehe, ๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์—ด์‹ฌํžˆ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค btw ^_^

์–ด์ ฏ๋ฐค socket.io์šฉ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://www.npmjs.org/package/socket.io-events

+1
๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋  ๋•Œ ์ƒˆ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
@geoah ๋ฏธ๋“ค์›จ์–ด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •ํ™•ํžˆ ํ–ˆ์Šต๋‹ˆ๋‹ค!

๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ฉด socket.io๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ socket.io ์ž์ฒด์˜ ์ผ๋ถ€๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•œ๋‹ค๊ณ  ๋Š๋ผ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” "์ด๊ณณ์—์„œ ์ผ์ด ์ง„ํ–‰๋˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋‹ค"๋ผ๋Š” ๋ง์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ทธ๊ฒƒ์„ ๋นผ์•ผ ํ•œ๋‹ค๋Š” ์ฃผ์žฅ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒฐ์ฝ” ์ข‹์€ ์ฃผ์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ฃผ์žฅ์€ ์šฐ๋ฆฌ๊ฐ€ ๋…ธ๋“œ EventEmitter ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋ ค๊ณ  ํ•˜๊ณ  ๋…ธ๋“œ์—๋Š” ์ด๊ฒƒ์ด ์—†์œผ๋ฏ€๋กœ "socket.io-ism"์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Node์—์„œ ์ถ”๊ฐ€์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ํ† ๋ก ์ด ์žˆ์—ˆ์ง€๋งŒ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

@chevex ์›๋ž˜ ์ œ ๋Š๋‚Œ

๊ทธ๊ฒƒ๋“ค์€ ํ›จ์”ฌ ๋” ๋‚˜์€ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค. EventEmitter๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋…ธ๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  @DanH42 ๋˜ํ•œ ๋ฏธ๋“ค์›จ์–ด๋กœ ์ด๋ฅผ ๋ณด๊ฐ•ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋” ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ ๋ฐœ์–ธ์„ ์ฒ ํšŒํ•ฉ๋‹ˆ๋‹ค :)

๋…ธ๋“œ์˜ EventEmitter๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ.

:+1:

์ด ๋ฌธ์ œ๋ฅผ ๋†“์นœ ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์ด๋ฒคํŠธ ์ „๋‹ฌ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Automattic/socket.io/issues/1715
์—ฌ๊ธฐ์—๋Š” ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  socket.io 1.0์˜ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. :ํ๋Š๋‚Œ:

+1
๋•Œ๋กœ๋Š” ์ „ํŒŒ๋˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค!

+1

  • 1

๋‚˜๋Š” ๊ฒฐ๊ตญ hden์˜ socketio-wildcard ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์žฅ ํˆฌ๋ช…ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณด์ด๋ฉฐ ์ €์—๊ฒŒ ์•„์ฃผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ :+1: ์ด๊ฒƒ์„ ํ•ต์‹ฌ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด!

๊ณ ๋งˆ์›Œ ๋งท! ๋‚˜๋Š” ๋Šช์— ๋น ์กŒ์ง€๋งŒ ์ฃผ๋ง์— ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๊ฐœ๋Ÿ‰

๋‚ด iPhone์—์„œ ๋ณด๋‚ธ

2015๋…„ 1์›” 6์ผ ์˜ค์ „ 8์‹œ 30๋ถ„์— Matt Fletcher [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” @NathanGRomano https://github.com/NathanGRomano 's๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
socketio-events https://www.npmjs.com/package/socket.io-events ๋ชจ๋“ˆ; ๊ทธ๊ฒƒ
๊ฐ€์žฅ ํˆฌ๋ช…ํ•œ ๋ฐฉ๋ฒ•(๋ฏธ๋“ค์›จ์–ด ์‚ฌ์šฉ)์œผ๋กœ ๋ณด์ด๋ฉฐ ๊ฝค ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋ฅผ ์œ„ํ•ด ๋ฉ‹์ง€๊ฒŒ. ํ•˜์ง€๋งŒ [์ด๋ฏธ์ง€: :+1:] ์ด ๋‚ด์šฉ์„ ํ•ต์‹ฌ์— ์ ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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

+1

+1

++++++

+1์€ ๋””๋ฒ„๊น…์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ํ•˜๋Š” ์‚ฌ๋žŒ์˜ ๋ฌธ์ œ๋ผ๋ฉด ํ•œ ๋ฒˆ ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” socket.io ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ด๊ณ  ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๊ทธ๋Ÿฌํ•œ ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •๊ทœ์‹ ํŒจํ„ด์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋„ˆ๋ฌด ๋Š๋ฆฐ? ๋ฌผ๋ก , ๋ณ‘ํ•ฉ ๋Œ€์ƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ตฌํ˜„์ด ๊ฑฐ๋ถ€๋˜๋”๋ผ๋„ ์ƒ๊ด€ ์—†์ง€๋งŒ ๊ด€์‹ฌ์ด ์—†๋‹ค๋ฉด ๊ท€์ฐฎ๊ฒŒ ํ•  ์ด์œ ๊ฐ€ ์—†๊ฒ ์ฃ ?). ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์กฐ์–ธ์„ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” socket.io-events ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ผ๊ณผ ํ•„์š”๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์—ˆ๋‹ค
๋‹ค์‹œ ๋งŒ์ง€๋ ค๋ฉด. ๋‚˜๋Š” ๊ทธ๊ฒƒ์œผ๋กœ ๊ฐ์‚ฌ๋ฅผ ์ง€์›ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

2015๋…„ 7์›” 25์ผ ํ† ์š”์ผ์— John Manko [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด ์ผ์„ ํ•˜๊ณ  ์žˆ๋Š” ๋ˆ„๊ตฐ๊ฐ€์˜ ๋ฌธ์ œ๋ผ๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ฃผ๊ณ  ์‹ถ๋‹ค.
๋ฐœ์‚ฌ. ๋‚˜๋Š” socket.io ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์ด ํ•„์š”ํ•  ๊ฒƒ์ด๊ณ  ์•„๋งˆ
๋‹ค๋ฅธ ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ
์ •๊ทœ์‹ ํŒจํ„ด์— ๋Œ€ํ•œ ์ƒ๊ฐ? ๋„ˆ๋ฌด ๋Š๋ฆฐ? ๋ฌผ๋ก , ๋‚˜๋Š” ๋‚ด ๊ฒƒ์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ณ‘ํ•ฉ์„ ๊ณ ๋ คํ•  ๋Œ€์ƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์‹œ๊ฐ„(๋‚˜๋Š”
๋‚ด ๊ตฌํ˜„์ด ๊ฑฐ๋ถ€๋˜๋”๋ผ๋„ ๊ด€์‹ฌ์ด ์—†๋‹ค๋ฉด ์™œ
๊ท€์ฐฎ์•„, ๊ทธ๋ ‡์ง€?). ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์กฐ์–ธ์„ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

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

+1

+1 ์ด ๋ฌธ์ œ๋Š” 5๋…„ ๋™์•ˆ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ ์ง€์›์ด ๋‹ค์‹œ ์ถ”๊ฐ€๋˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

+1

+1

+1

+1

+666

+1

์–˜๋“ค์•„, ์ง„์ง€ํ•˜๊ฒŒ. ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด ๊ธฐ๋Šฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋”ํ•˜๊ธฐ๋งŒ ํ•ฉ์‹œ๋‹ค, ์ œ๋ฐœ? ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‹ค์ œ ์ง„ํ–‰ ์ƒํ™ฉ์ด ์žˆ์„ ๋•Œ ์—…๋ฐ์ดํŠธ ์ด๋ฉ”์ผ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•„๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด์ƒ์ ์œผ๋กœ GitHub์— ํˆฌํ‘œ ์‹œ์Šคํ…œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

ํˆฌํ‘œ ์‹œ์Šคํ…œ์€ ํ›Œ๋ฅญํ•  ๊ฒƒ์ด์ง€๋งŒ ์กฐ๋งŒ๊ฐ„ ์ผ์–ด๋‚  ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์†”๋ฃจ์…˜์ด ์ง€๊ธˆ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฒŒ์‹œ๋˜์—ˆ์ง€๋งŒ ๋ชจ๋“  +1 ๋Œ“๊ธ€๋กœ ์ธํ•ด ๋ณด์ด์ง€ ์•Š๊ฒŒ ์Šคํฌ๋กค๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

socketio-wildcard ๋ชจ๋“ˆ์€ ์ €์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์•„์ง ์ตœ์‹  ๋…ธ๋“œ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค).
๋ˆ„๊ตฐ๊ฐ€ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, socketio-wildcard ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ ์ถ”๊ฐ€ ์ข…์†์„ฑ์ด๋ฏ€๋กœ ์ฝ”์–ด์— ๋„์ž…ํ•˜๊ณ  ์ด ์ „์ฒด ๋ฌธ์ œ ์Šค๋ ˆ๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ๋๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ์™ธ๋ถ€ ๋ชจ๋“ˆ(์ข…์ข… ๋น„์Šทํ•œ ์ด๋ฆ„)์— ๋Œ€ํ•œ ํ˜ผ๋ž€์˜ ์—ฌ์ง€๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ GitHub์— ํˆฌํ‘œ ์‹œ์Šคํ…œ์ด ์žˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํˆฌํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋งŒ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค...!

๋‚ด๊ฐ€ ๋ฉ์ฒญํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ IO ํด๋ผ์ด์–ธํŠธ ๊ฐœ์ฒด๋กœ socketio-wildcard๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹จ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ง„์ง€ํ•˜๊ฒŒ, _์‹ฌ๊ฐํ•˜๊ฒŒ_ ํ•ต์‹ฌ์— ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. socket.io์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํฌํ•ด์•ผ ํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๊ทธ๊ณณ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์€ ๋ง๋„ ์•ˆ๋˜๊ณ  ์†”์งํžˆ ์ง€๊ธˆ socket.io์— ๋Œ€ํ•œ ์‹ ๋ขฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž๊ฐ€ ๋ชจ๋“  ์ œ์•ˆ์„ ์ˆ˜๋ฝํ•  ํ•„์š”๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€? ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์™„์ „ํžˆ ๋‹นํ™ฉํ•˜๊ฒŒํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ํ–ˆ์–ด.

@n2liquid ์ด๊ฒƒ์ด ํ•ต์‹ฌ์ด์–ด์•ผ ํ•˜๋Š”์ง€๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์ง€๋งŒ ํ† ๋ก ์€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ† ๋ก ์ด ์žˆ์—ˆ์„ ๋•Œ์—๋„ ๋‹ค๋ฅธ Node ์ด๋ฒคํŠธ ์ด๋ฏธํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@rauchg

์ด๊ฒƒ์ด ํ•ต์‹ฌ์ด์–ด์•ผ ํ•˜๋Š”์ง€๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์ง€๋งŒ ํ† ๋ก ์€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด์— ๋Œ€ํ•ด ํ† ๋ก ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์—๋ฏธํ„ฐ๊ฐ€ ๋…ธ๋“œ ์„ธ๊ณ„์—์„œ ๋ฐ˜๋“œ์‹œ ์ผ๋ฐ˜์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ๋‹ฌ์„ฑํ•˜๋ ค๋Š” ๋ชฉํ‘œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค....
๊ทœ์น™์„ ์—„๊ฒฉํžˆ ์ค€์ˆ˜ํ•˜๊ฑฐ๋‚˜ ์ •๋ง ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ ค๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๊นŒ?

socket.io์˜ ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์ด ์ด ๊ธฐ๋Šฅ์ด ํ•ต์‹ฌ์— ์žˆ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ •๋ง ๋น„ํ‹€๊ฑฐ๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด ๋ณด์ด๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ๋‹ฌ๋ฆฌ ๋งํ•˜๋ฉด socket.io์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ธ์ˆ˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๊ตฌํ˜„์ด '๊ต๊ณผ์„œ ์˜ฌ๋ฐ”๋ฆ„'์ด ์•„๋‹ˆ๋”๋ผ๋„ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ฉ”์„œ๋“œ์— ์˜์กดํ•˜๋Š” ๋Œ€์‹  socket.io์—์„œ ์ด๋Ÿฌํ•œ '์บ์น˜' ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‚ฌ๋žŒ๋“ค์„ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์•ˆ๋‚ดํ•˜๋ฉด ์‚ฌ๋ฌผ์ด ๋‹จํŽธํ™”๋˜๊ณ  socket.io๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ํ›จ์”ฌ ๋” ์ทจ์•ฝํ•ด์ง‘๋‹ˆ๋‹ค.

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

@rauchg ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ‹์ง„ ๋ฐฉ๋ฒ•์€ ์†Œ์ผ“์˜ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ํฌ์ฐฉํ•˜๋Š” socket.use(function(data,next){..}) ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  catchall์—์„œ ํ›„์† catchall ๋˜๋Š” ๊ธฐ๋ณธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ๋กœ ์ œ์–ด๋ฅผ ์ „๋‹ฌํ•˜๋Š” next() ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ถ„๋‹น ๋“ค์–ด์˜ค๋Š” ์ด๋ฒคํŠธ์˜ ์–‘์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ 2์„ผํŠธ๋ฅผ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@Michael77 ์˜ ์†”๋ฃจ์…˜์ด ๊ฐ€์žฅ @Michael77 ์˜ ๋ฉ”์‹œ์ง€ ์กฐ์ ˆ ๊ตฌํ˜„ ๋ฐ ๊ทธ ์™ธ์— ๋ˆ„๊ฐ€ ์•Œ

socket.io์— ๋ฏธ๋“ค์›จ์–ด/์‚ฌ์šฉ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋™์ผํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@carpii ํ•ญ์ƒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ง€์›ํ•˜์ง€ _์•Š์€_ ํฐ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์นœ์ˆ™ํ•จ์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋‘˜ ๋‹ค ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” socket.use ์•„์ด๋””์–ด๋ฅผ ์•„์ฃผ ์ข‹์•„ํ•˜๋Š”๋ฐ, ๋ฌด์—‡๋ณด๋‹ค๋„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์™€์ผ๋“œ์นด๋“œ ํ™•์žฅ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด btw์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด ์ฃผ์‹  @carpii @Michael77 @n2liquid ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@n2liquid _all_ ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค(๋˜ํ•œ socket.io-wildcard ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ˆ˜์ •์„ ์œ„ํ•ด @hden ์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค).

scoketio-wildcard๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์œ ํšจํ•œ ์†”๋ฃจ์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— ์†Œ์ผ“์„ ์ง์ ‘ ๋…ธ์ถœํ•˜๋Š” ๋Œ€์‹  ์†Œ์ผ“ ์ˆ˜์‹ ๊ธฐ๋ฅผ ๋ž˜ํ•‘ํ•˜๊ณ  ๋ž˜ํผ๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ ์ „ํŒŒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝœ๋ฐฑ์—์„œ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์–ป๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด Event Emitter 2๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ด ์ œ ์ดํ•ด์ž…๋‹ˆ๋‹ค. ์†Œ์ผ“์„ ์ง์ ‘ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๊นŒ? ๋ž˜ํผ์—์„œ 'newListener' ์ˆ˜์‹ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ(๊ทธ๋Ÿฌ๋‚˜ ์†Œ์ผ“ ์ด๋ฒคํŠธ์—์„œ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ณ  ๋ž˜ํผ์—์„œ ์ƒˆ ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํ˜ธ์ถœ ํ•จ์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œ์ผ“ ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ)? ์ฝœ๋ฐฑ ๋‚ด์—์„œ ์ด๋ฒคํŠธ ์ด๋ฆ„์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@akotlar ์ด๋ฒคํŠธ ์ด๋ฆ„์€ scoketio-wildcard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฝœ๋ฐฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„, ๊ณ ๋งˆ์›Œ! socket.io-wildcard readme์—์„œ ์ด๊ฒƒ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์ง€๋‚ด์š”?
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ on("*", function () { ์— +1

๋๊นŒ์ง€ +1

@alexey-sh @emin93 https://github.com/hden/socketio-wildcard ์—์„œ ๋ฌธ์„œ๋ฅผ ์นœ์ ˆํ•˜๊ฒŒ ์ฝ์œผ ์‹ ๋‹ค๋ฉด ์˜ˆ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@hden ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณด์•˜๊ณ  ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ถ”๊ฐ€ ์ข…์†์„ฑ์ด๋ฉฐ Socket.IO ์ฝ”์–ด์— ์ง์ ‘ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ €๋กœ๋ถ€ํ„ฐ +1์„ ์–ป์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ ๋กœ์ง์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

socket.emit('public-event', {'type': 'login', ...});
socket.emit('public-event', {'type': 'logout', ...});

๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋„ +1์ž…๋‹ˆ๋‹ค.

+๐Ÿ’ฏ ์พ…!

+1!!!!

socket.use ์‚ฌ์šฉํ•˜์„ธ์š”.

socket.use()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ engine.io์˜ PING/PONG ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๋กœ๊ทธ์˜จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Ping ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•ด ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ๋‹ค๊ณ ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

PING/PONG ํŒจํ‚ท์„ ๊ธฐ๋กํ•˜๊ณ  ์‹ถ์ง€๋งŒ socket.use()๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง€์—๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ  engine.io์˜ ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ์€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+1

+1

2011๋…„๋ถ€ํ„ฐ +1? ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :(

๋‹ค์‹œ, ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด socket.use ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. https://socket.io/docs/server-api/#socket -use-fn

@darrachequesne ์„œ๋ฒ„ ์ธก์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ด ์š”์ฒญ(ํด๋ผ์ด์–ธํŠธ์šฉ)์— ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€

์ด๊ฒƒ์— ๋Œ€ํ•ด ๋” ์ด์ƒ? socket.use ๋Š” ์„œ๋ฒ„ ์ „์šฉ์ธ๋ฐ ์™œ ์ด ํ‹ฐ์ผ“์ด ๋‹ซํ˜€ ์žˆ์Šต๋‹ˆ๊นŒ?

socket.use ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ต์ฒด ๋ฐฉ๋ฒ•

// Server
io.in('room1').emit('backend', data_out);
io.in('room1').emit('frontend', data_out);

์™€ ๊ฐ™์€

// Server
io.in('room1').emit('*end', data_out);  // not working code - proper regex would be nice

๋˜๋Š”

// Client
socket.on('*end', function(data){  // not working code - proper regex would be nice

๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ๋‚˜์—ดํ•˜๋Š” ์ž‘์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

// Client
var lala = function(data){ 
    // example
}
socket.on('backend', lala);
socket.on('frontend', lala);
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰