์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์บก์ฒํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด:
client.on("*", function(data) {
}
๋์ํ๋ค.
์ด๋ฒคํธ์ด๋ฏธํฐ2
+1
์ด๋ ๊ฒ ํ๋ฉด ํํฐ๋ฅผ ๋ง๋ค ์ ์๊ณ ๋ชจ๋ ์ด๋ฒคํธ์ ๋ํด ๊ทธ๋ ์ง ์์ ํญ๋ชฉ์ ๋ง๋ค ์ ์์ต๋๋ค.
+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
์๋ฌด๋ ์ด๊ฒ์ ๋ํด ์์ง ์ผํ์ง ์์์ต๋๊น? ์ด๋ค ์ข ๋ฅ์ ํ์ ?
์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ๋ชฉ์ ์ ์ถฉ๋ถํ ์ ์๋ํ๋ _์ผ์ข ์_ ์๋ฃจ์ ์ด ์์ง๋ง ์์ ํ ์์ผ๋์นด๋ ์๋ฃจ์ ์ ์๋๋๋ค... '*'์ ๊ตฌํ์ ๊ฐ๊น์ต๋๋ค.
+1
+1
+1
+1
+1
+1
์๋ฏธ์๋ ๊ธฐ์ฌ๊ฐ ์๋ ๋๊ธ์ ๋จ๊ธฐ๊ธด ์ซ์ง๋ง 2๋ ์ ๋ถํฐ ์์ฒญ์ ๋ฐ์๊ณ ์ด๋ฏธ ๊ฑด์ค์ ์ธ ๋ด์ฉ์ ๋ชจ๋ ์ธ๊ธํ์ต๋๋ค. ๊ทธ๋์...
+1
์ด๊ฒ์ ์ฌ์ฉ์ ์์ญ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋นํ ์ฌ์ธ ๊ฒ์ ๋๋ค. ํต์ฌ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค. ๋๋ฌด ๋ง์ ์์ญ์ด ํจ์น ์์ด ์ด๋ฒคํธ ์ด๋ฏธํฐ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ํํฌ๋ฅผ ๋์ธ ์ ์๋ค๋ฉด ๊ธฐ๊บผ์ด ๋๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์ ์์ญ์์ ์ด๋ป๊ฒ ๊ตฌํ๋ฉ๋๊น? ๋ด๊ฐ ๋ณธ ๋ชจ๋ ์๋ฃจ์ ์๋ ์ฝ๋๋ฒ ์ด์ค ๋ถ๊ธฐ๊ฐ ํฌํจ๋๋ฉฐ ์ผ๋ถ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋ ์ฐ๊ฒฐํ์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ ๋จ์ํ๊ณ ๋จ์ํ "ํ๋์ ํจ์์์ ๋ชจ๋ ๊ฒ์ ์ ๋์ ์ผ๋ก ์ก์๋ผ"๋ง ํ์ํ์ง๋ง RegEx ์ง์์ (์์ค๋ฅผ ๋๋ฌด ์์ธํ ๋ณด์ง ์์ ์ฌ๋์๊ฒ) ๋๋ฌด ์ด๋ ต๊ฒ ๋ณด์ด์ง ์๊ณ ํ์คํ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ์ ์ฉํ ๊ฒ์ ๋๋ค. . ์ ๋ Express.JS ๊ฒฝ๋ก์์ ํญ์ ์ ๊ท์์ ์ฌ์ฉํฉ๋๋ค. socket.io์์ ๋์ผํ ์์ ์ ์ํํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ ์ก ๊ณ์ธต/ํ๋กํ ์ฝ์ ๋ณ๊ฒฝ๋์ง ์์ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ๋จ์ํ ์ง๋ ์กฐํ๊ฐ ์๋๋ผ ๋ณด๋ค ํฌ๊ด์ ์ธ(์ ๊ท ํํ์ ๊ธฐ๋ฐ) ๊ฒ์์ ์ํํ๋ ค๋ฉด ์์ชฝ ๋์์ '๋ฐฉ์ถ'์ ์ฌ์ ์ํ๋ฉด ๋ฉ๋๋ค.
๋น ๋ฅธ ๊ตฌํ ์ ์:
on
์ฌ์ ์emit
๋ฅผ ์ฌ์ ์ํ์ฌ ๋จผ์ ๋น ๋ฅธ ๊ฒฝ์ฐ(์ผ๋ฐ ๋งต ์กฐํ)๋ฅผ ์ํํ ๋ค์ '*' ๋ฆฌ์ค๋๋ฅผ ์ดํด๋ณด๊ณ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.๋ถ๋ช ํ ์ด๊ฒ์ ํฌํฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ํํฌ๊ฐ ์๋ฏธํ๋ ๋ฐ๋ ์์ญ์ด ํจ์น๊ฐ ํ์ํ์ง ์์ ์๋ฃจ์ ์ ์ ์ฌ์ ์ผ๋ก ์ฐพ์ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ ๊ฐ์ง๊ฐ ๋งค์ฐ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ผ๋ ์ ์ ๊ณ ๋ คํ๋ฉด ํฐ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๊ทธ๋ฅ ๊ถ๊ธํด์ userland์์ socket.Manager.prototype.onClientMessage๋ฅผ ์ฌ์ ์ํ ์ ์์๋์?
๋๋ ๊ทธ๋ ๊ฒํ๊ณ ๋ ธ๋์์ socket.io ๋ชจ๋์ ๋ณ๊ฒฝํ์ง ์๊ณ ์ ์๋ํ์ต๋๋ค. ๊ทธ๋ค์ง ์์์ง ์๊ณ ๋ถ์์ง๊ธฐ ์ฝ์ง๋ง ์ ์ด๋ ํฌํฌ๋ ํผํด์ผ ํฉ๋๋ค.
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์ฉ ๋ฏธ๋ค์จ์ด๋ฅผ ์ค๋นํ์ต๋๋ค.
+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
๋๋ ๊ฒฐ๊ตญ 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 ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@rauchg ,
@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);
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๋ป๊ฒ ์ง๋ด์?
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋
on("*", function () {
์ +1