ã¯ã€ã«ãã«ãŒãã䜿çšããŠãã¹ãŠã®ã€ãã³ãããã£ããã£ã§ãããšäŸ¿å©ã§ãã äŸãã°ïŒ
client.on("*", function(data) {
}
åæããã
EventEmitter2
+1
ããã«ããããã¹ãŠã®ã€ãã³ãã«å¯ŸããŠã§ã¯ãªãããã£ã«ã¿ãŒãäœæã§ããããã«ãªããŸãã
+1
åæåäœã®ã¿-ã€ãã³ãã«ã«ã¹ã¿ã éåæãã£ã«ã¿ãŒãå°å ¥ããæ¹ãè¯ãã®ã§ã¯ãªãã§ããããïŒ
@dvv
ç§ã¯ãã®èãã«éåžžã«èå³ããããŸãã
EE2ã®éžæè¢ã®ããã€ãã¯ãç§ãçæ³ãšèãããã®ã§ã¯ãããŸããããã*ãã®ã¿ããµããŒããããŠããå Žåã§ããããã®äžè¬çãªèãæ¹ã+1ããŸãã
æ¬åœã«ãã£ãããªãŒã«ïŒ manager.on("event", function(client, event, data) {}
-ã¯ããŒãžã£ãŒã®æ°ãæžããããšãã§ããŸã
ãã£ãããªãŒã«ãªã¹ããŒãè¿œå ããããšãžã®æµæãèŠããŠããŸãããèŠããŠããå¯äžã®è°è«ã¯ãã*ãã䜿çšãããã©ããããŸãã¯.addGlobalListenerïŒïŒã®ãããªå¥ã®ã¡ãœããåã䜿çšãããã©ããã§ããã
+1
ç§ãããã¹ãŠã®ã€ãã³ããã€ã³ã¿ãŒã»ããããåŠçãå®äºããåŸã§ã®ã¿ãç¹å®ã®ãã³ãã©ãŒã«ãããã確èªãããæ¹æ³ãå¿
èŠã«ãªããŸãã äž»ã«ãã®ã³ã°ã®ç®çã§ãããå¿
èŠã«ãªããŸãã Socket.ioãã¬ãŒã¯çŸåšãã³ã³ãœãŒã«ã«ã®ã¿ãéåžžã«ç¬åçãªæ¹æ³ã§ãã°ãèšé²ããŸãã
dvv-sã¢ãããŒãã¯æ¬åœã«ç§ã®å¥œã¿ã§ãã
å®éãdvvã§èª¬æãããŠããããã«ãã€ãã³ããç¹å®ã®ãã³ãã©ãŒã«äžç¶ããŠããã¹ãŠã®ã€ãã³ããååŸããããšããå§ãããŸãã
ãã®åé¡ãåãããŠãã ãã:)
ãã®æ©èœãå®è£
ãããã®ã楜ãã¿ã«ããŠããŸãã
ããŠãããããŸããããã©ãŒã¯ã®ãã©ã³ãã«EE2ãè¿œå ããŸããïŒ https ïŒ
ãã©ã³ãã¯æ¬¡ã®å Žæã«ãããŸãïŒ //github.com/einaros/socket.io/commits/ee2
èãã¯å€§æè¿ã§ãã
EE2ãå¥åŠãªã¡ãœããåãåãé€ãã .on('*')
ãè¿œå ããå Žåãç§ã¯ããã+1ããŸã
ç§ã¯EE2ã§-1ã§ã
ããã¯ã³ãŒãã«ããã«è¥å€§åãè¿œå ããŸããç§éã¯ãŸããããã¯ã©ã€ã¢ã³ãåŽã§ãµããŒãããå¿ èŠããããŸãã ã€ãŸããè¿œå ã®11.8 KBã©ã€ãã©ãªïŒæå°åãããçŽ3.5kbïŒãåºè·ããå¿ èŠããããŸãã ããããä»åŸã®ã¢ãã€ã«åžå Žã§ã¯ãã§ããã ãå€ãã®ãã€ããç¯çŽããããšæããŸãã
ãããæ¬åœã«ã¯ã€ã«ãã«ãŒãã䜿çšããããš/ãã¹ãŠã®ãªã¹ããŒããã£ããããããšã ãã§ããå Žå..次ã«ãããã¯ã all
ãªã¹ããŒãžã®è¿œå ã®åŒã³åºãã1åã ãå®è¡ããæ¢åã®emité¢æ°ããªãŒããŒã©ã€ãããããšã«ãã£ãŠå®è¡ããå¿
èŠããããŸãã ããã¯ã3ã5ã®LOCå€æŽã®ããã«ãªããŸãïŒã³ã¡ã³ããé€ã;ïŒïŒã ãŸããããã©ãŒãã³ã¹ã«åœ±é¿ãããããèšå®ããã¯ã®èåŸã«é ãå¿
èŠããããŸãã EventEmittingã¯ãããã³ãŒããã¹ã§ãããåžžã«å¯èœãªéãæé©ãã€é«éã§ããå¿
èŠããããŸãã ã¯ã€ã«ãã«ãŒããè¿œå ãããšãããã©ãŒãã³ã¹ãäœäžããŸãã
ãã£ãããªãŒã«ã¯ééããªãããéèŠãªéšåã§ããå¿ èŠã«å¿ããŠããã®åŸã€ãã³ãããªã³ã«ããã®ã¯ç°¡åã§ãã
ã¯ã€ã«ãã«ãŒãïŒEE2ïŒã«ã€ããŠã¯ããŸãæ°ã«ããªãã§ãã ããããã ãããã¹ãŠã®ã€ãã³ããã€ã³ã¿ãŒã»ããããæ¹æ³ã¯å¿ é ã§ãã
EE2 ...ã.onïŒ '*'ïŒãè¿œå ããå Žåãç§ã¯ããã+1ããŸã
TJããªãã¯ã¯ã¬ã€ãžãŒãã...
server.on('foo.*', function(value1, value2) {
console.log(this.event, value1, value2);
});
ããã¯EE2ã®REAââDMEããã®ãã®ã§ãã åœç¶ããfooãã ãªãã·ã§ã³ã§ãã
EE2ãå¥åŠãªã¡ãœããåãåãé€ãå Žå
åæããŸãã
@pyrotechnick the EE2 .on('*')
ã¯ãã£ãããªãŒã«iircã§ã¯ãããŸãã
*
ã¯ããã¹ãŠã®ã€ãã³ããç²ç®çã«ãã£ãããããšããæå³ã§ãã£ãããªãŒã«ã§ã¯ãããŸãããããã¿ãŒã³*
ãã¹ãŠã®ãã£ãã«ã«äžèŽããããããã¹ãŠã®ã€ãã³ããå¹æçã«ãã£ããããŸãã
ããã¯éå¹ççã§ãã ããããããã¯æåŸ ã©ããã«æ©èœããŸãã
ç§ã¯ééã£ãŠããŸããã ããªããæ£ãã...
{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 ïŒ
ç§ã¯ãŸã ã€ãã³ãã«æ¥ç¶ã§ããªãã®ã§ãããã¯æ©èœããŸããã ç§ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãããéšå±ã®ååãç¥ããŸããã ãã®ãããã©ã®éšå±ã®ãã¹ãŠã®ã¡ãã»ãŒãžã«ãå¿çã§ããããã«ããçæ³çã«ã¯ã¡ãã»ãŒãžãéä¿¡ãããéšå±ã®ååãèŠã€ããããšæã£ãŠããŸãã
ã€ãã³ãã®æ£èŠè¡šçŸãµããŒããè¿œå ããŸãããã®ããã«ããŠãåè©ãšåè©ã®ç¯å²ããã£ããã§ããŸãã
+1
+1
+1
+1
+1
ç§ã¯ãã¹ãŠãåŠçããã¹ãŒããŒã°ããŒãã«ã¡ãœããã奜ãã§ã
io.setïŒ 'global_listener'ãfunctionïŒnamespaceãeventãargsãemitïŒ{
//åå空éã€ãã³ããšåŒæ°ã«åºã¥ããŠäœããè¡ã
//ãã®åå空éãšãã®ã€ãã³ãã«ãªã³ã¯ãããã€ãã³ããªã¹ããŒãåŒã³åºãããã«emitïŒïŒãåŒã³åºãããšãã§ãããã©ãã
}ïŒ;
io.setïŒ 'global_authorization'ãfunctionïŒnamespaceãhandshakeDataãcallbackïŒ{
//åå空éãšhandshakeDataã«åºã¥ããŠæ¥ç¶ãåãå
¥ãããã©ãã
}ïŒ;
ãã£ãããªãŒã«ããµããŒããããšããã¿ãŒãå¿
èŠã§ããã ã©ã socket.on("*")
ã¯ãã¯ã©ã€ã¢ã³ãã§åäœããããã§ã軜éã§ããã ããã§ãUI Kitãã@visionmediaã®ãšããã¿ãŒãhttps ïŒ
@HenrikJoreteg
ç®±ããåºããŠhttps://github.com/component/emitterã«ã*ããè¿œå ããå Žåããã
ãŸãããã®ãšããã¿ãŒã¯æ¬¡ã®socket.ioã«é»åãäŸçµŠããŸãã removeListener
ãžã®off
ã·ã§ãŒãã«ãããå«ãŸããŠããŸããããã¯çŽ æŽãããã§ãïŒD
ããããããïŒ
+1
++
+1
+1
+1
+1
+ = 1
+1
+1
+1
+1
誰ããããã«åãçµãã ããšããããŸããïŒ ã©ããªãã¬ã€ã«ïŒ
å¿ èŠãªç®çã«ã¯ååã«æ©èœãã_sortof_ãœãªã¥ãŒã·ã§ã³ããããŸãããæ¬æ Œçãªã¯ã€ã«ãã«ãŒããœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸãã...ã*ãã®å®è£ ã®ãããªãã®ã§ã
+1
+1
+1
+1
+1
+1
æå³ã®ããããšã¯äœãè²¢ç®ããªãã³ã¡ã³ããæ®ãã®ã¯å«ã§ãããããã¯2幎åããèŠæ±ãããŠããã建èšçãªããšã¯ãã¹ãŠãã§ã«èšãããŠããŸãã ãã...
+1
ããã¯ãŠãŒã¶ãŒã©ã³ãã«è¿œå ããã®ã¯ããªãç°¡åã§ããã³ã¢ã³ãŒãããŒã¹ã«è¿œå ããå¿ èŠã¯ãªããšæããŸãã ã¢ã³ããŒããããããŸããããã«ã€ãã³ããšããã¿ãŒæ©èœãç°¡åã«æ¡åŒµã§ããããã«ããããã®ããã¯ãæäŒãããšãã§ããã°ãåãã§ããããŸãã
ããã¯ãŠãŒã¶ãŒã©ã³ãã§ã©ã®ããã«å®è£ ãããŸããïŒ ç§ãèŠããã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ã¯ã³ãŒãããŒã¹ããã©ãŒã¯ããããšãå«ã¿ãäœäººãã®äººã ã¯å®å šã«ç°ãªãã©ã€ãã©ãªã«ãªã³ã¯ããŸããã
ç§ã®å Žåãå¿ èŠãªã®ã¯åçŽã§åçŽãªã1ã€ã®é¢æ°ã§ãã¹ãŠãå®å šã«ãã£ãããããã ãã§ãããæ£èŠè¡šçŸã®ãµããŒãã¯ïŒãœãŒã¹ãããŸã詳ãã調ã¹ãŠããªã人ã«ã¯ïŒããã»ã©é£ããã¯ãªãã確ãã«ä¿¡ããããªãã»ã©äŸ¿å©ã§ãã ã Express.JSã«ãŒãã§ã¯åžžã«æ£èŠè¡šçŸã䜿çšããŠããŸãã socket.ioã§åãããšãã§ãããšããã§ãããã
ãã©ã³ã¹ããŒãå±€/ãããã³ã«ã¯å€æŽãããŸããã 䞡端ã®ãemitãããªãŒããŒã©ã€ãããã ãã§ããããã«ãã¯ã¢ãããå®è¡ããã ãã§ãªããããå æ¬çãªïŒæ£èŠè¡šçŸããŒã¹ã®ïŒæ€çŽ¢ãå®è¡ã§ããŸãã
ç°¡åãªå®è£ ã®ææ¡ïŒ
on
ããªãŒããŒã©ã€ãããŸãemit
ããªãŒããŒã©ã€ãããŠãæåã«é«éã±ãŒã¹ïŒéåžžã®ãããã«ãã¯ã¢ããïŒãå®è¡ãã次ã«ã*ããªã¹ããŒã調ã¹ãŠãããããäžèŽãããã©ããã確èªããŸããæããã«ãããã¯ãã©ãŒã¯ãå¿ èŠãšããŸããã ç§ãããã¯ã§æå³ããã®ã¯ãã¢ã³ããŒããããå¿ èŠãšããªã解決çãèŠã€ããããšãã§ããå¯èœæ§ããããšããããšã§ãããããã2ã€ã¯éåžžã«åçŽãªæ¹æ³ã§ããããã倧ããªåé¡ãšã¯èŠãªããŸããã
奜å¥å¿ããã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
ãããªåçŽãªãã®ã§ååã§ããç§ãæãã«ã ïŒãã ããBackboneã¯ã°ããŒãã«ã€ãã³ãã«ã*ãã§ã¯ãªããallãã䜿çšããæåã«åŒã³åºãããã€ãã³ãåãæž¡ããŸãããããæåã®æ¹æ³ã§ãïŒã ïŒãã ããããã¯åãªãææ¡ã§ãïŒ=ïŒ
å人çã«ã¯RegExpã®æ¹æ³ã«+1ãã "*"
ã¯ã€ã«ãã«ãŒããšæ¯èŒãããšãJavascriptãå€ããã³ã³ãœãŒã«ãå°ãªããšæããŸãã
ããããææ°ã®å£°ã®ããã«ããã£ãããªãŒã«æ©èœãããé©ããŠããããã§ãã
ãããå®éã«socket.ioã®åé¡ã§ãããã©ããã¯ããããŸããã
IMOãéé£ããããã®åçµãããAPIã
ïŒ+1ïŒ
誰ãããã®ã¹ã¬ãããèªãã§ããŠã0.9.xããã³1.0.0ã§ã¯ã€ã«ãã«ãŒãã€ãã³ãã䜿çšããæ¹æ³ããŸã æ¢ããŠããå ŽåïŒ https ïŒ//www.npmjs.org/package/socketio-wildcard
çŽ æŽããã@geoah ïŒ
@guille heheãããã¯ç§ãå¶ç¶èŠã€ããç§ã®ãã®ã§ã¯ãããŸããã é 匵ã£ãŠãããŠããããšã^ _ ^
æšå€ãsocket.ioã®ããã«ãŠã§ã¢ãäœæããŸããã
+1
ããŒã¿ãåžžã«åãããã«åŠçãããå Žåã¯ãæ°ãããªã¹ããŒãäœæãããªãŒããŒããããåæžãããšäŸ¿å©ã§ãã
@geoahããã«ãŠã§ã¢ãããããšããç§ãå¿
èŠãªããšãæ£ç¢ºã«å®è¡ããŸããïŒ
ããã«ãŠã§ã¢ãæ£åžžã«æ©èœããå Žåãsocket.ioã¯ãã®ãŸãŸã§ããå¿ èŠããããŸãã
ããã¯ãsocket.ioèªäœã®äžéšãšããŠç§ãå人çã«å®å šã«çã«ããªã£ãŠãããšæããŠãããã®ã®1ã€ã§ãã ããã®èŸºãã§ç©äºãè¡ãããæ¹æ³ã§ã¯ãªããããšãé€ããŠããããé€å€ããããšã«ã€ããŠã®è°è«ã¯èŠåœãããŸãããããã¯æ±ºããŠéåžžã«è¯ãè°è«ã§ã¯ãããŸããã
åŒæ°ã¯ãããŒãEventEmitter
ãšåãããã«åäœããããšããŸãããããŒãã«ã¯ããããªãããããsocket.io-ismãã«ãªããŸãã ãããè¿œå ããããšã«ã€ããŠNodeã§åºç¯ãªè°è«ããããŸããããããã¯æåããŸããã§ããã
@chevexããã¯ããšããšç§ã®æ°æã¡ã§ããããŸããããæ°ããããã«ãŠã§ã¢ã®ãµããŒãã«ãããèªåã§ç°¡åã«è¿œå ã§ããŸãã äŸãšããŠsocketio-wildcardãèŠããšãã€ã³ããŒãããŠäœ¿çšããã®ã¯éåžžã«ç°¡åã§ãã ãããããã»ãšãã©ã®å Žåãããã«ãŠã§ã¢ãããã€ãå«ãŸããŠããexpress.jsã®ããã«ãªã£ãŠããŸãã§ãããã
ãããã¯ã¯ããã«è¯ãè°è«ã§ãã EventEmitterãããã©ã«ãã§ããŒããšã¯ç°ãªãåäœãããããšã¯æãŸãããªããšæããŸãã ãŸãã @ DanH42ã¯ãããã«ãŠã§ã¢ã§æ¡åŒµããæ¹ãããããå¿ èŠãšãã人ã«ãšã£ãŠããçã«ããªã£ãŠãããšæããŸãã ç§ã¯ç§ã®å£°æãæ€åããŸã:)
ããŒãã®EventEmitterã®ã¿ããã®ãŸãŸã¯ã€ã«ãã«ãŒãããµããŒãããŠããå Žåã
ïŒ+1ïŒ
ãã®åé¡ãèŠéããããã§ããã€ãã³ãã®è»¢éã«é¢ããæ°ããåé¡ãéå§ããŸããã
https://github.com/Automattic/socket.io/issues/1715
ãœãŒã¹ãå€æŽããã«socket.io1.0ããã®ãã¹ãŠã®ã€ãã³ããåŠçãã2ã€ã®æ¹æ³ãå«ãŸããŠããŸãã
ãããã°çšã«ããã欲ããã ãã§ãã ãããžã§ã¯ãã«ã©ã€ãã©ãªãè¿œå ãŸãã¯å€æŽããæš©éããããŸããã ïŒsobïŒ
+1
æã
ãããªãã¯äŒæããŠãããã¹ãŠã®ã€ãã³ããç¥ãå¿
èŠããããŸãïŒ
+1
æçµçã«hdenã®
ããããšããããïŒ ç§ã¯å§åãããŸããããé±æ«ãéãããŠããã€ããäœããããšæã£ãŠããŸã
æ¹å
ç§ã®iPhoneããéä¿¡ããã
2015幎1æ6æ¥åå8æ30åãMattFletchernotifications @ github.comã¯æ¬¡ã®ããã«æžããŠããŸãã
@NathanGRomanohttps ïŒ//github.com/NathanGRomanoã䜿çšããããšã«ãªããŸãã
socketio-eventshttps ïŒ //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æ¥ïŒåææ¥ïŒã«ã¯ããžã§ã³ã»æŒ«æ¹ã®[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ã¢ãžã¥ãŒã«ã¯ç§ã«ãšã£ãŠããŸãæ©èœããŠããŸãïŒç¢ºãã«ç§ã¯ãŸã ææ°ã®ããŒãã«æŽæ°ããŠããŸããïŒã
ãã®libãé©åã§ãªãçç±ã誰ãã説æã§ããã°äŸ¿å©ã§ããïŒ
ããã socketio-wildcardã¯å®å šã«ããŸãæ©èœããŸãããããã§ãéåžžã«åçŽãªè¿œå ã®äŸåé¢ä¿ãªã®ã§ãã³ã¢ã«å°å ¥ããŠããã®åé¡ã¹ã¬ããå šäœãå®å šã«çµäºããã ãã§ããã§ãããã ãŸããã©ã¡ãã䜿çšããã®ã«æé©ãªå€éšã¢ãžã¥ãŒã«ã§ãããïŒå€ãã®å Žåãåæ§ã®ååãä»ããããŠããŸãïŒã«ã€ããŠæ··ä¹±ããäœå°ããªããªããŸãã ãŸããGitHubã«æ祚ã·ã¹ãã ãããã°ãããã«æ祚ã§ããæ¹æ³ãããã°ããã®ã§ã¯ãªãããšåæããŸã...ïŒ
ã°ãããŠãããããããŸããããIOã¯ã©ã€ã¢ã³ããªããžã§ã¯ãã䜿çšããŠsocketio-wildcardãèšå®ããæ¹æ³ãããããŸããã ããã¯çå£ã«ãã³ã¢ã«_çå£ã«_å«ãŸããã¹ãã§ãã socket.ioã®ã¡ã³ããããããæãŸãªãå Žåã¯ã誰ãããã®ãããžã§ã¯ãããã©ãŒã¯ããã ãã§ãå šå¡ãããã«ç§»åã§ããŸããããã¯ã°ãããŠããã ãã§ãæ£çŽãªãšãããsocket.ioã«å¯Ÿããä¿¡é Œã¯ãŸã£ãããããŸããã
ã¡ã³ããããã¹ãŠã®ææ¡ãåãå ¥ããå¿ èŠã¯ãªãããšã¯ç解ããŠããŸãããããã¯ïŒ ããã¯å®å šã«ç§ãå°æãããŸãã è¡ãæ¹æ³ã
@ n2liquidãããæ žå¿ã«ããã¹ããã©ããã¯æ確ã§ã¯ãããŸããããè°è«ã¯å€§æè¿ã§ãã ããšãã°ãä»ã®ããŒãã€ãã³ããšããã¿ãŒã¯ããã€ããã§ãè°è«ããã£ããšããŠãããã®ããã«åäœããŸããã
@rauchg
ãããæ žå¿ã«ããã¹ããã©ããã¯æ確ã§ã¯ãããŸããããè°è«ã¯å€§æè¿ã§ã
ããã§ã¯ãããã«ã€ããŠè©±ãåãããšãã§ããŸããïŒ
ãã®çš®ã®ãšããã¿ãŒã¯ããŒãã®äžçã§ã¯å¿
ãããäžè¬çã§ã¯ãªããšããããªãã®ææã¯ç解ã§ããŸãããããã¯ããªããäœãéæããããšããŠããã®ãã«ãããŸãã
èŠåãå³å¯ã«é å®ãããšããèãã§ããããããšãæ¬åœã«äŸ¿å©ãªã©ã€ãã©ãªãæäŸãããšããèãã§ããïŒ
socket.ioã®å€ãã®ãŠãŒã¶ãŒãããã®æ©èœãã³ã¢ã«ãªã£ãŠããªãã®ã«æ¬åœã«ã€ãŸãããŠããããšã¯æããã§ããããŠãŒã¶ãŒãããããã¹ãã ãšæåŸ ããã®ã¯åççã ãšæãããŸãã
èšãæããã°ãsocket.ioã§ãã®æ©èœãæäŸããªããšããè°è«ã¯äœã§ããïŒ
å®è£
ããæç§æžã«æ£ãããªããå Žåã§ããå€ãã®ç°ãªãã©ã€ãã©ãªãã¡ãœããã«é Œãå¿
èŠã¯ãªããsocket.ioã«ãããã®ãcatchallããã³ãã©ãŒãå®è£
ããæšæºçãªæ¹æ³ã«ãªããŸãã
ãµãŒãããŒãã£ã®ã©ã€ãã©ãªãŸãã¯åé¿çã«ãŠãŒã¶ãŒãèªå°ãããšãæçåããã ãã§ãsocket.ioã䜿çšããã³ãŒãããŒã¹ãç¶æããããšãããšããã«è匱ã«ãªããŸãã
ãã£ãããªãŒã«ãã±ãããåŠçããæ£åŒãªæ¹æ³ããã£ãã»ããããã®ã§ãããåŸã§å€æŽããå¿ èŠãããå Žåã¯ããŠãŒã¶ãŒãèéãéãç¬èªã®ã«ãŒããèŠã€ããããã ãã«æ®ãã®ã§ã¯ãªããå°ãªããšãæšå¥šããã移è¡æé ããããŸãã
@rauchgãããå®è£
ããã¯ãŒã«ãªæ¹æ³ã¯ããœã±ããäžã®ãã¹ãŠã®ã€ãã³ãããã£ããããsocket.use(function(data,next){..})
é¢æ°ãæã¡ããã£ãããªãŒã«ããåŸç¶ã®ãã£ãããªãŒã«ãŸãã¯ããã©ã«ãã®ã€ãã³ããã³ãã©ãŒã«å¶åŸ¡ãæž¡ãnextïŒïŒé¢æ°ãæž¡ãããšã ãšæããŸãã ã
ãããç§ãçŸåšsocket.ioã䜿çšããŠããæ¹æ³ã§ããããã¯ã1åãããã«çºçããã€ãã³ãã®éãå¶éããæ¹æ³ãå¿ èŠã ã£ãããã§ããããã¯äžè¬çãªäœ¿çšäŸã ãšæããŸãã ç§ã®2ã»ã³ããèªãã§ãããŠããããšãã
@ Michael77ã®ãœãªã¥ãŒã·ã§ã³ãäžçªå¥œãã§ãã ããã¯ãã€ãã³ããšããã¿ãŒã®ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ã«ã¯åœ±é¿ãããããã§æ±ããŠãã以äžã®ããšãå¯èœã«ããŸãïŒããšãã°ã
socket.ioã«ããã«ãŠã§ã¢/ useé¢æ°ãããããšã¯ç¥ã£ãŠããŸãããã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã§ã¯äœ¿çšã§ããããããšåãç®çãæãããŠãããã©ããã¯ããããŸããã
@carpiiäœãããµããŒãããªãçç±ã¯åžžã«ãããŸããè€éããå¢ãã芪ãã¿ããããæžããããšã§ãã ãã®æ©èœã¯äž¡æ¹ããã§ãã¯ããŸãã
ç§ã¯socket.use
ã¢ã€ãã¢ããšãŠã奜ãã§ããã®äžã«ã¯ã©ã€ã¢ã³ãã«ã¯ã€ã«ãã«ãŒãæ¡åŒµæ©èœãç°¡åã«å®è£
ã§ããŸãã
ãã®ãšããã§ãã£ãŒãããã¯ãããããšã@ carpii @ Michael77 @ n2liquid ã
@ rauchg ã
ãŸãïŒ https ïŒ
@ n2liquid _all_ã®ãã£ãŒãããã¯ã¯å€§æè¿ã§ã-ããªãã«æè¬ïŒãšäžã®ç°¡åãªè§£æ±ºçãšããŠ@hdenããsocket.io-ã¯ã€ã«ãã«ãŒãïŒã
scoketio-wildcardã¯å®å šã«æå¹ãªè§£æ±ºçã®ããã§ãã ãŸããã³ãŒã«ããã¯ã§ã€ãã³ãåãååŸããããšæã£ãŠããŸãããããã«ããããœã±ãããã¢ããªã±ãŒã·ã§ã³ã®æ®ãã®éšåã«çŽæ¥å ¬éããã®ã§ã¯ãªãããœã±ãããªã¹ããŒãã©ããããã©ãããŒãä»ããŠã€ãã³ããäŒæã§ããŸãã ç§ã®ç解ã§ã¯ãã¯ã€ã«ãã«ãŒãã䜿çšããŠãããå®è¡ããã«ã¯ãEvent Emitter2ãå¿ èŠã«ãªããŸãã ããã¯ããœã±ãããçŽæ¥å ¬éããæ¹ããããã°ãããããšã§ããïŒ ã©ãããŒã§ãnewListenerãããªãã¹ã³ããããšã«åºã¥ãããã®ïŒãã ãããœã±ããã€ãã³ãã§ããªã¬ãŒããæ¹æ³ãããããªããã©ãããŒã«æ°ããã€ãã³ããç»é²ããåŒã³åºãé¢æ°ã«åºã¥ããŠãœã±ããã€ãã³ããç»é²ããæ¹æ³ã®ã¿ïŒïŒ ã³ãŒã«ããã¯å ã§ã€ãã³ãåã«ã¢ã¯ã»ã¹ã§ããããšã«èå³ããã人ã¯ä»ã«ããŸããïŒ
@akotlar scoketio-wildcardã䜿çšããŠããå Žåãã€ãã³ãåã¯ã³ãŒã«ããã¯ã§äœ¿çšã§ããŸãã
ãããããããšãïŒ ãããsocket.io-wildcardreadmeã§æå®ãããšäŸ¿å©ãªå ŽåããããŸãã
ã©ã®ããã«ãããèµ·ãã£ãŠããïŒ
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã§on("*", function () {
+1
ãã£ãš+1
@ alexey-sh @ emin93 https://github.com/hden/socketio-wildcardããããã¥ã¡ã³ãã芪åã«èªãã§ããã ããã°ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã§èªãããšãã§ããŸãã
@hdenããããšããã¯ããç§ã¯ãããèŠãŸããããããŠç§ã¯ãã§ã«ããã䜿ã£ãŠããŸãã ããããããã¯è¿œå ã®äŸåé¢ä¿ã§ãããSocket.IOã³ã¢ã«çŽæ¥çµ±åããããšã«å察ãããã®ã¯äœããããŸããããã®ãããç§ãã+1ãååŸããŸãã
ããã¯ããã¹ãŠã®ã€ãã³ãã«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