
Jii-cometã¯ã¹ã±ãŒã©ãã«ã§ãããé«è² è·ããã³äœã€ã³ã¿ãŒããã転éã«å¯Ÿå¿ããŠãããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®çµ¶ãéãªãæ¥ç¶ãå®çŸããŠãç¬æã«ããŒã¿ã亀æããŸãã
Jii-cometã¯ããã£ãã«éã®ã¡ãã»ãŒãžã³ã°ãããããžã®ãµãã¹ã¯ã©ã€ãããµãŒããŒéã®ããŒã¿äº€æãªã©ãç°¡çŽ åããã³ã³ããŒãã³ããšã¯ã©ã¹ã®ã»ãããæäŸããŸãã ã¢ãžã¥ãŒã«èªäœã¯ã¯ã©ã€ã¢ã³ãã«ã¡ãã»ãŒãžãé ä¿¡ããæ¹æ³ãèªèããŸãããããã®éãåæ§ã§ããæ¢åã®äžè¬çãªã©ã€ãã©ãªïŒããšãã°ã socket.io ã sockjs ïŒã§å®è¡ã§ããããã«ããŸãä¿¡é Œæ§ãšæ¡åŒµæ§ãé«ããããã«æœè±¡åãå«ãŸããŠããŸãã
ãã®ãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠåããŠè³ã«ãã人ã«ã¯ã 以åã®èšäºãèªããããµã€ãã«ã¢ã¯ã»ã¹ããããšããå§ãããŸã ã èŠããã«ã
Jiiã¯ãã¢ãŒããã¯ãã£ãšAPIãYii 2.0 PHPãã¬ãŒã ã¯ãŒã¯ã«åºã¥ããŠãããã¬ãŒã ã¯ãŒã¯ã§ããããããæ倧éã«æŽ»çšããJavaScriptã®å©ç¹ãä¿æããŠããŸãã
埩ç¿
ãŸããåœæãšã¯äœãã«é¢ããå°ãã®å©ãïŒ wiki ïŒïŒ
CometïŒWebéçºïŒ-Webã¢ããªã±ãŒã·ã§ã³ã®ä»»æã®ã¢ãã«ãäžå®ã®HTTPæ¥ç¶ã«ãããWebãµãŒããŒã¯ããã©ãŠã¶ãŒããã®è¿œå èŠæ±ãªãã«ãã©ãŠã¶ãŒã«ããŒã¿ãéä¿¡ïŒããã·ã¥ïŒã§ããŸãã
Jii-cometã®æ©èœ
顧客ïŒ
- ãã£ã³ãã«ããã®ã¡ãã»ãŒãžã®éåä¿¡
- ãã£ã³ãã«ç»é²
- ãµãŒããŒäžã®ã¢ã¯ã·ã§ã³ãåŒã³åºã
- ãã©ã³ã·ã³ã°ïŒãµãŒããŒã®ã©ã³ãã éžæïŒ
- ã¡ãã»ãŒãžãã©ã³ã¹ããŒããå€æŽããæ©èœ
ãµãŒããŒïŒ
- ãã£ã³ãã«ããã®ã¡ãã»ãŒãžã®éåä¿¡
- ãã£ã³ãã«ããã®ã¡ãã»ãŒãžã賌èªãã
- ãã£ã³ãã«ãžã®æ¥ç¶ã«çœ²åãã
- æ¥ç¶ãžã®ã¡ãã»ãŒãžã®éä¿¡
- ã¡ãã»ãŒãžãã©ã³ã¹ããŒãããããããã³ãã¥ãŒãå€æŽããæ©èœ
- è€æ°ã®ããã»ã¹ãšãµãŒããŒãžã®ã¹ã±ãŒãªã³ã°
- ãªãã¹ã³ãªã³ãªãŒã¢ãŒã
- ãã¥ãŒããã¢ã¯ã·ã§ã³ãå®è¡ãã
èšçœ®
ã³ã¡ããã¯ã ã¢ããªã±ãŒã·ã§ã³ã³ã³ããŒãã³ããšããŠãµãŒããŒãšã¯ã©ã€ã¢ã³ãã«ããããã€ã³ã¹ããŒã«ãããŸãã ãµãŒããŒäžã§ãåœæãéããæå®ãããããŒãããã®ããŒã¿ãããªãã¹ã³ãããŸããã¯ã©ã€ã¢ã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ãåæåãããšãã«ãã®ããŒãã«æ¥ç¶ããæ å ±ãåŸ ã¡ãŸãã
ã¯ã©ã€ã¢ã³ãããµãŒããŒäžã®ãã¹ããã£ãã«ã«ãµãã¹ã¯ã©ã€ãããããã«ã¡ãã»ãŒãžãéä¿¡ããã¢ããªã±ãŒã·ã§ã³ã®äŸãèããŠã¿ãŸãããã
ãµãŒããŒïŒ
var Jii = require('jii'); require('jii-comet'); require('jii-workers') .application('comet', Jii.mergeConfigs( { application: { basePath: __dirname, components: { comet: { className: 'Jii.comet.server.Server', port: 4401, /** * * @param {Jii.comet.server.ConnectionEvent} event */ 'on addConnection': function(event) { Jii.app.comet.subscribe(event.connection.id, 'test'); } } } } }, custom.comet || {} ));
顧客ïŒ
require('jii/deps'); require('jii-comet/sockjs'); Jii.createWebApplication({ application: { basePath: location.href, components: { comet: { className: 'Jii.comet.client.Client', serverUrl: 'http://localhost:4401/comet', /** * * @param {Jii.base.Event} event */ 'on open': function(event) { Jii.app.comet.send('test', {message: 'Hello World'}); }, /** * * @param {Jii.comet.ChannelEvent} event */ 'on channel:test': function(event) { console.log('Income message: ' + event.params.message); } } } } }).start();
次ã«ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®ã³ã³ããŒãã³ããèŠãŠã¿ãŸãããã
ã³ã¡ãããµãŒããŒ

Jii-cometã¯ããµãŒããŒãäœæããããã®2ã€ã®ã¯ã©ã¹ãæäŸããŸãã
- Jii.comet.server.HubServerã¯ãæ¥ç¶ããã®ã¡ãã»ãŒãžã®ã¿ããªãã¹ã³ããããã«æ§æããããµãŒããŒã§ãããæ¥ç¶èªäœã¯ãããŸããããé£æ¥ããã»ã¹ã«ããæ¥ç¶ã«ããŒã¿ãéä¿¡ã§ããŸãã ã€ãŸã ãã®ãããªãµãŒããŒïŒããŒãäžïŒã«çŽæ¥æ¥ç¶ããããšã¯ã§ããŸããããã¡ãã»ãŒãžã¯ä»ã®ããã»ã¹ïŒã¯ã©ã€ã¢ã³ããæ¥ç¶ãããŠããããã»ã¹ïŒãä»ããŠéä¿¡ã§ããŸãã
- Jii.comet.server.Serverã¯æ¬æ ŒçãªãµãŒããŒã§ããã以åã®ãµãŒããŒããç¶æ¿ãããŸãã ã¯ã©ã€ã¢ã³ããšã®çŽæ¥æ¥ç¶ãä¿åããã³ç¶æããã¯ã©ã€ã¢ã³ããšããŒã¿ã亀æã§ããŸãã
ãã®åé¢ã¯ãã¢ããªã±ãŒã·ã§ã³ã®æè»ãªã¹ã±ãŒãªã³ã°ã«å¿ èŠã§ãã ããšãã°ãã¯ã©ã€ã¢ã³ããžã®æ¥ç¶ã®ã¿ããµããŒãããããžãã¹ããžãã¯ãåŠçããªãJii.comet.server.Serverã³ã³ããŒãã³ãã䜿çšããŠãããã€ãã®ããã»ã¹ãäœæã§ããŸãã ãããŠãéãèšç®ãå®è¡ããããã€ãã®Jii.comet.server.HubServerããã»ã¹ãäœæããŸãã ããã«ãããã³ã¡ãããã£ãã«ã®å¿çæ§ãåäžããŸãããã¹ãŠã®æäœãåããµãŒããŒäžã§è¡ãããå Žåãè€éãªæäœã«ããããã»ã¹ãé ããªããåŸç¶ã®ãã¹ãŠã®èŠæ±ïŒè»œãèŠæ±ã§ãïŒãé 延ããŸãã
倧ããªè² è·ããªãããäœãéžæããã°ãããããããªãå Žåã¯ã Jii.comet.server.Serverã³ã³ããŒãã³ããéžæããŠãã ãã ãããã«ã¯ãã¹ãŠã®æ©èœãå«ãŸããŠããŸãã
ãµãŒããŒã®æ§æäŸã¯æ¬¡ã®ããã«ãªããŸãã
application: { components: { comet: { className: 'Jii.comet.server.Server', host: '0.0.0.0', port: 3100 }, // ... } }
ããããã£ãã¡ãœãããããã³ã€ãã³ãã®å®å šãªãªã¹ãã以äžã«ç€ºããŸãã
Jii.comet.server.HubServer
ããããã£
- listenActions ïŒbooleanïŒ-ã¯ã©ã€ã¢ã³ãããã¢ã¯ã·ã§ã³ãåŒã³åºãããã®ãªã¯ãšã¹ããåãå ¥ãããã©ããã ããã©ã«ãã§ã¯trueã§ãã
- ãã ïŒãªããžã§ã¯ãïŒ-ããã»ã¹ãŸãã¯ãµãŒããŒéã§ã¡ãã»ãŒãžã亀æããããã®Jii.comet.server.hub.HubInterfaceã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ãããããã³ã³ããŒãã³ãããŸãã¯ãã®æ§æã ããã©ã«ãã§ã¯ã Jii.comet.server.hub.Redisã³ã³ããŒãã³ããäœæãããŸãã
- ãã¥ãŒ ïŒãªããžã§ã¯ãïŒ-ãã¥ãŒãã³ã³ããŒãã³ãããŸãã¯ãã®æ§æãã¢ã¯ã·ã§ã³ïŒã¢ã¯ã·ã§ã³ïŒã®åŒã³åºãã®ãã¥ãŒãèç©ããããã®Jii.comet.server.queue.QueueInterfaceã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããŸãã ããã©ã«ãã§ã¯ã Jii.comet.server.queue.Redisã³ã³ããŒãã³ããäœæãããŸãã
æ¹æ³
- startïŒïŒ - ããããã³ãã¥ãŒã³ã³ããŒãã³ãã®æ¥ç¶ãéãããã£ãã«ããã®ã¡ãã»ãŒãžã®ãªãã¹ã³ãéå§ããŸãã
- stopïŒïŒ -ã³ã³ããŒãã³ãã®ãã¹ãŠã®æ¥ç¶ãåæããå€éšããã®æ å ±ã®åä¿¡ãåæ¢ããŸãã
- sendToChannelïŒãã£ãã«ãããŒã¿ïŒ -ããå ã®ãã£ãã«ã«ã¡ãã»ãŒãžãéä¿¡ããŸãã ããã§ã channelã¯ïŒstringïŒ ãã£ãã«ã®ååã§ããã dataã¯ïŒstring | object | *ïŒéä¿¡ããããŒã¿ã§ãã
- sendToConnectionïŒidãdataïŒ -åã®ã¡ãœãããšåæ§ã«ãããŒã¿ãéä¿¡ããŸããããã£ãã«ã§ã¯ãªããçŽæ¥æ¥ç¶ã«éä¿¡ããŸãã ããã§id ïŒstringïŒã¯Jii.comet.server.ConnectionããååŸããæ¥ç¶èå¥åã§ããã dataã¯ïŒstring | object | *ïŒéä¿¡ããããŒã¿ã§ãã
- onïŒååããã³ãã©ãŒãããŒã¿ãisAppendïŒããã³offïŒååããã³ãã©ãŒïŒã¯ãã€ãã³ãããµãã¹ã¯ã©ã€ãããã³ãµãã¹ã¯ã©ã€ã解é€ããããã®ã¡ãœããã§ãã ã€ãã³ãã®ãªã¹ãã以äžã«èª¬æããŸã;åŒæ°ã®èª¬æã¯ã€ãã³ãã»ã¯ã·ã§ã³ã«ãããŸãã
- hasChannelHandlersïŒnameïŒ -ããã»ã¹ã«åå ïŒæååïŒãã£ãã«ã®ãµãã¹ã¯ã©ã€ããŒãããå Žåã trueãè¿ããŸãã
ã€ãã³ã
- ãã£ãã« -ã€ãã³ãã¯ãä»»æã®ãã£ãã«ãžã®çä¿¡ã¡ãã»ãŒãžã«ãã£ãŠããªã¬ãŒãããŸãã ãã³ãã©ãŒã®æåã®åŒæ°ã¯ã ãã£ãã« ïŒæååïŒããã³ã¡ãã»ãŒãž ïŒæååïŒãã©ã¡ãŒã¿ãŒãæã€Jii.comet.ChannelEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
- channelïŒïŒ my_channel_nameïŒ -ã€ãã³ãã¯ãåŸã«æå®ããããã£ãã«ãžã®çä¿¡ã¡ãã»ãŒãžã§çºçããŸã
message-ãããžã®çä¿¡ã¡ãã»ãŒãžããããšãã€ãã³ããçºçããŸãã ãã³ãã©ãŒã®æåã®åŒæ°ã¯ã ã¡ãã»ãŒãž ïŒæååïŒãã©ã¡ãŒã¿ãŒãæã€Jii.comet.server.MessageEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
Jii.comet.server.Server
äžèšã®ããããã£ãã¡ãœãããããã³ã€ãã³ããç¶æ¿ãã次ãè¿œå ããŸãã
ããããã£
- host ïŒæååïŒ-ã¯ã©ã€ã¢ã³ãããã®çä¿¡æ¥ç¶ãåŸ æ©ããŠãããã¹ãã ããã©ã«ãã§ã¯ã 0.0.0.0ã§ãã
- port ïŒnumberïŒ-çä¿¡æ¥ç¶çšã®ããŒãã ããã©ã«ãã§ã¯ã 4100ã§ãã
- transport ïŒãªããžã§ã¯ãïŒ-ã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ïŒãšçŽæ¥ã¡ãã»ãŒãžã亀æããããã®Jii.comet.server.transport.TransportInterfaceã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããã³ã³ããŒãã³ããŸãã¯ãã®æ§æã
æ¹æ³
- subscribeïŒconnectionIdãchannelïŒããã³unsubscribeïŒconnectionIdãchannelïŒ -æå®ããããã£ãã«ãžã®æ¥ç¶ã«çœ²åããç»é²ã解é€ããŸãã Jiiã¯ãã¡ãã»ãŒãžã®ç«¶åãåé¿ããããã«ããµãŒããŒäžã®ãã£ãã«ã«ãµãã¹ã¯ã©ã€ãããããšããå§ãããŸãã ã¡ãœããã§ã¯ã connectionId ïŒæååïŒã¯Jii.comet.server.ConnectionããååŸããæ¥ç¶èå¥åã§ããã channel ïŒæååïŒã¯ãã£ã³ãã«ã®ååã§ãã
ã€ãã³ã
- addConnection-æ°ããã¯ã©ã€ã¢ã³ããåå ãããšã€ãã³ããçºçããŸãã ãã³ãã©ãŒã®æåã®åŒæ°ã¯ã æ¥ç¶ãã©ã¡ãŒã¿ãŒïŒ Jii.comet.server.Connection ïŒãæã€Jii.comet.server.ConnectionEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
- removeConnection-ã¯ã©ã€ã¢ã³ããžã®æ¥ç¶ã倱ããããšãã«ã€ãã³ããçºçããŸãã åã®äŸãšåæ§ã«ã Jii.comet.server.ConnectionEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ããã³ãã©ãŒã®æåã®åŒæ°ãšããŠæž¡ãããŸãã
Jii.comet.server.Connection
ã¯ã©ã€ã¢ã³ãæ¥ç¶æ å ±ãå«ãŸããŠããŸã
ããããã£
- id ïŒæååïŒ-æ¥ç¶èå¥åã æ¥ç¶ã«ã¡ãã»ãŒãžãçŽæ¥éä¿¡ããããã«äœ¿çšãããŸãã
- ãªã¯ãšã¹ã ïŒ Jii.comet.server.Request ïŒ-æ¥ç¶æ å ±ïŒããããŒãIPã¢ãã¬ã¹ãæ¥ç¶ããŒããªã©ã
- originalConnection ïŒãªããžã§ã¯ãïŒ-ãã©ã³ã¹ããŒãããåä¿¡ããæ¥ç¶ã®å éšã€ã³ã¹ã¿ã³ã¹ã åè»äž¡ã«åºæã
åœæã¯ã©ã€ã¢ã³ã

ã¯ã©ã€ã¢ã³ãã¯å°ãåçŽã§ãã1ã€ã®ã³ã³ããŒãã³ãJii.comet.client.ClientãããããµãŒããŒã®1ã€ã«æ¥ç¶ããŠããŒã¿ã亀æããŸãã
application: { components: { comet: { className: 'Jii.comet.client.Client', serverUrl: 'http://localhost:4401/comet', autoOpen: true }, // ... } }
ããããã£ãã¡ãœãããããã³ã€ãã³ãã®å®å šãªãªã¹ãã以äžã«ç€ºããŸãã
Jii.comet.client.Client
ããããã£
- transport ïŒãªããžã§ã¯ãïŒ-ãµãŒããŒãšã¡ãã»ãŒãžã亀æããããã®Jii.comet.client.transport.TransportInterfaceã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããã³ã³ããŒãã³ããŸãã¯ãã®æ§æã
- ãã©ã°ã€ã³ ïŒãªããžã§ã¯ãïŒ-ã³ã³ããŒãã³ããŸãã¯ãã®æ§æã®ã»ããããããããã¯ã©ã€ã¢ã³ãã³ã¡ããã®æ©èœãæ¡åŒµããããã«Jii.comet.client.plugin.PluginInterfaceã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããŸãã
- workersCount ïŒnumber | nullïŒ-ãµãŒããŒã¯ãŒã«ãŒã®æ倧æ°ã ãã®èšå®ã¯ãã¯ã©ã€ã¢ã³ãã®è² è·ãåæ£ããããã«äœ¿çšãããŸãã ããã©ã«ãã§ã¯ã nullã¯ç¡å¹ã«ãªã£ãŠããŸãã
- autoOpen ïŒããŒã«å€ïŒ -trueã®å Žåãåœæã¢ããªã±ãŒã·ã§ã³ãåæåããããšãã¯ã©ã€ã¢ã³ãã¯èªåçã«ãµãŒããŒã«æ¥ç¶ããŸãã ããã©ã«ãã§ã¯trueã§ãã
ã€ãã³ã
- open-æ¥ç¶ãæ£åžžã«éããããšãã«ã€ãã³ããçºçããŸãã
- close-ã€ãã³ãã¯ãæ¥ç¶ãéãããããšãã«çºçããŸãã
- beforeSend-ã€ãã³ãã¯çºä¿¡ã¡ãã»ãŒãžã§çºçããŸãã ãã³ãã©ãŒã®æåã®åŒæ°ã¯ã messageãã©ã¡ãŒã¿ãŒãæã€Jii.comet.client.MessageEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã ã¡ãã»ãŒãžãã©ã¡ãŒã¿ãŒãå€æŽããããšã«ãããéä¿¡ãããã¡ãã»ãŒãžãå€æŽã§ããŸãã ã¡ãã»ãŒãžãã©ã¡ãŒã¿ãŒã®ããŒã¿ã¯ãµãŒããŒã«éä¿¡ãããŸãã
- channel-ã€ãã³ãã¯ããµãã¹ã¯ã©ã€ãããããã£ãã«ãžã®çä¿¡ã¡ãã»ãŒãžã«ãã£ãŠããªã¬ãŒãããŸãã ãã³ãã©ãŒã®æåã®åŒæ°ã¯ã ãã£ãã« ïŒæååïŒããã³ã¡ãã»ãŒãž ïŒæååïŒãã©ã¡ãŒã¿ãŒãæã€Jii.comet.ChannelEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
- channelïŒïŒ my_channel_nameïŒ - ïŒã®åŸã«æå®ããããµãã¹ã¯ã©ã€ãããããã£ãã«ãžã®çä¿¡ã¡ãã»ãŒãžã§ã€ãã³ããçºçããŸãã ããšãã°ã Jii.app.comet.onïŒ 'channelïŒtest'ã...ïŒãåŒã³åºããããšã ã¡ãã»ãŒãžã¯ãã¹ããã£ãã«ã«ãµãã¹ã¯ã©ã€ããããŸãã äžèšã®ããã«ããã©ã¡ãŒã¿channel ïŒstringïŒããã³message ïŒstringïŒãæã€Jii.comet.ChannelEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯ãæåã®åŒæ°ãšããŠã€ãã³ããã³ãã©ãŒã«æž¡ãããŸãã
- message-çä¿¡ã¡ãã»ãŒãžã§ã€ãã³ããçºçããŸãã ãã³ãã©ãŒã®æåã®åŒæ°ã¯ã ã¡ãã»ãŒãž ïŒæååïŒãã©ã¡ãŒã¿ãŒãæã€Jii.comet.server.MessageEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
- beforeRequest-ã¯ã©ã€ã¢ã³ããã¢ã¯ã·ã§ã³ãå®äºããããã«ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããããšããåã«ã€ãã³ããçºçããŸãã ãã³ãã©ãŒãžã®æåã®åŒæ°ã¯ããã©ã¡ãŒã¿ãŒroute ïŒstringïŒããã³params ïŒobjectïŒãæã€Jii.comet.client.RequestEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã ãã®ã€ãã³ãã§èŠæ±ãã©ã¡ãŒã¿ãŒãå€æŽã§ããŸããparamsãã©ã¡ãŒã¿ãŒããã®ããŒã¿ã¯ãµãŒããŒã«éä¿¡ãããŸãã
- request-ãµãŒããŒã以åã«èŠæ±ãããã¢ã¯ã·ã§ã³ã«å¿çãããšãã€ãã³ããçºçããŸãã ãã³ãã©ãŒãžã®æåã®åŒæ°ã¯ããã©ã¡ãŒã¿ãŒroute ïŒstringïŒããã³params ïŒobjectïŒãæã€Jii.comet.client.RequestEventã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
ãã©ã°ã€ã³
ãã©ã°ã€ã³ã䜿çšãããšãã¯ã©ã€ã¢ã³ãã®åœæã®æ©èœãæ¡åŒµã§ããŸãã ããã©ã«ãã§ã¯ã Jii.comet.client.plugin.AutoReconnectãèªåçã«åæ¥ç¶ãããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããŸãã ãã©ã°ã€ã³ã®äœæãšæ¥ç¶ã¯éåžžã«ç°¡åã§ãã Jii.comet.client.plugin.PluginInterfaceãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ã¯ã¡ãœããã®å®è£ ãå¿ èŠãšããŸããããcometã€ãã³ãã«ãµãã¹ã¯ã©ã€ãã§ããcometãã©ã¡ãŒã¿ãŒãä»ããŠã®ã¿cometã¯ã©ã€ã¢ã³ããžã®ã¢ã¯ã»ã¹ãæäŸããŸãã ãã©ã°ã€ã³ã¯ã ãã©ã°ã€ã³ã»ã¯ã·ã§ã³ã«è¿œå ããããšã«ãããæ§æãéããŠã€ã³ã¹ããŒã«ããã³æ§æãããŸãã
application: { components: { comet: { className: 'Jii.comet.client.Client', // ... plugins: { autoReconnect: { enable: false }, myPlugin: { className: 'app.components.MyCometPlugin' } } }, // ... } }
ä»çµã¿

äžèŠãjii-cometã¯åœæ茞éã©ã€ãã©ãªïŒsockjsãsocket.io-ããéžæïŒã®ã©ãããŒã§ãããããã§ã¯ãããŸããã ã¯ã©ã€ã¢ã³ããžã®ã¡ãã»ãŒãžé ä¿¡æ©èœãšãã®éã®ã¿ããã©ã³ã¹ããŒãã©ã€ãã©ãªããååŸãããŸãã ãã£ãã«ããµãã¹ã¯ãªãã·ã§ã³ãã¹ã±ãŒãªã³ã°ãããã³è¿œå æ©èœã®å®è£ ã¯jii-cometã§è¡ãããŸããã ã¢ãŒããã¯ãã£çã«ãå éšãã®jii-cometã¯ã次ã®ã³ã³ããŒãã³ãã«åå²ãããŸãã
ãµãŒããŒïŒ
- ãã©ã³ã¹ããŒãïŒ Jii.comet.server.transport.TransportInterface ïŒ-ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ã¡ãã»ãŒãžäº€æã®æœè±¡åã
- ããïŒ Jii.comet.server.hub.HubInterface ïŒ-ããã»ã¹ãšãµãŒããŒéã®ã¡ãã»ãŒãžäº€æã®æœè±¡åã
- ãã¥ãŒïŒ Jii.comet.server.queue.QueueInterface ïŒã¯ãã¢ã¯ã·ã§ã³åŒã³åºããèç©ããããã®æœè±¡åã§ãã
- æ¥ç¶ïŒ Jii.comet.server.Connection ïŒ-ãã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«ã¯æ¥ç¶æ å ±ãå«ãŸããŠãããã³ã³ããã¹ãã³ã³ããŒãã³ããšããŠäœ¿çšã§ããŸã ã
顧客ïŒ
- ãã©ã³ã¹ããŒãïŒ Jii.comet.client.transport.TransportInterface ïŒ-ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ã¡ãã»ãŒãžäº€æã®æœè±¡åã
- ãã©ã°ã€ã³ïŒ Jii.comet.client.plugin.PluginInterface ïŒ-ã¯ã©ã€ã¢ã³ãã³ã¡ããã®æ©èœãæ¡åŒµããããã®æœè±¡åã ããã©ã«ãã§ã¯ã Jii.comet.client.plugin.AutoReconnectãèªåçã«åæ¥ç¶ãããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããŸãã
ãããã®æœè±¡åã¯ãã¹ãŠãã¢ããªã±ãŒã·ã§ã³ã®æ§æãšã³ã³ããã¹ããéããŠã«ã¹ã¿ãã€ãºããã³åå®çŸ©ã§ããŸãã
äŸ
- è€æ°ã®é¡§å®¢
- æ¥ç¶ãç¶æããããã®ããã€ãã®ãµãŒããŒããã»ã¹ïŒ Jii.comet.server.Serverããã³listenActions = false ïŒ
- æ¥ç¶ãç¶æããã¢ã¯ã·ã§ã³ãåŠçããããã®ããã€ãã®ãµãŒããŒããã»ã¹ïŒ Jii.comet.server.Serverããã³listenActions = true ïŒ
- ã¢ã¯ã·ã§ã³ã®ã¿ãåŠçããããã®è€æ°ã®ãµãŒããŒããã»ã¹ïŒ Jii.comet.server.HubServerããã³listenActions = true ïŒ
äŸïŒã¯ã©ã€ã¢ã³ãããã£ãã«ã«ã¡ãã»ãŒãžãéä¿¡ããŸã

- ã¯ã©ã€ã¢ã³ãã¯ãã¹ããã£ãã«ã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
- æ¥ç¶ããµããŒããããµãŒããŒããã»ã¹ã¯ãã®ã¡ãã»ãŒãžãåä¿¡ããããïŒ Jii.comet.server.hub.HubInterface ïŒã«éä¿¡ããŸãã
- ããã¯ããã®ãã£ãã«ã«ãµãã¹ã¯ã©ã€ãããŠããïŒãŸãã¯æ¥ç¶ã眲åãããŠããïŒãã¹ãŠã®ãµãŒããŒããã»ã¹ã«ãã®ã¡ãã»ãŒãžãéä¿¡ããŸãã
- ãµãŒããŒããã»ã¹ã¯ã¡ãã»ãŒãžãåä¿¡ãããµãã¹ã¯ã©ã€ãããŠããæ¥ç¶ã«éä¿¡ããŸãã
äŸïŒã¯ã©ã€ã¢ã³ãããµãŒããŒã§ã¢ã¯ã·ã§ã³ãåŒã³åºã

- ã¯ã©ã€ã¢ã³ãã¯ã ãµã€ã/ãã¹ãã¢ã¯ã·ã§ã³ãå®è¡ããèŠæ±ãéä¿¡ããŸãã
- æ¥ç¶ããµããŒããããµãŒããŒããã»ã¹ã¯ãããåãå ¥ããã¢ã¯ã·ã§ã³ãã¥ãŒïŒ Jii.comet.server.queue.QueueInterface ïŒã«ããããããŸãããŸããããïŒ Jii.comet.server.hub.HubInterface ïŒãä»ããŠãã¢ã¯ã·ã§ã³ãåŠçãããã¹ãŠã®ãµãŒããŒã«éç¥ãéä¿¡ããŸãïŒ listenActions = true ïŒãã¥ãŒãæŽæ°ãããããšã
- listenActions = trueã®ãµãŒããŒããã»ã¹ã®1ã€ã¯ãèŠæ±ããã¥ãŒããåŒãåºãïŒRedisã®å®è£ ã§lpopã¡ãœããã䜿çšïŒãã¢ã¯ã·ã§ã³ãéå§ããŸãã
- ã¢ã¯ã·ã§ã³ãå®äºãããšããµãŒããŒããã»ã¹ã¯ã¢ã¯ã·ã§ã³ã®çµæïŒå¿çïŒãã¯ã©ã€ã¢ã³ãã«éãè¿ããŸãã ãã®ãµãŒããŒããã»ã¹ã¯ã¯ã©ã€ã¢ã³ããšçŽæ¥æ¥ç¶ããŠããªããããããïŒ Jii.comet.server.hub.HubInterface ïŒã«éä¿¡ããŸãã
- ããã¯ããã®æ¥ç¶ã®ã¡ãã»ãŒãžã«ãµãã¹ã¯ã©ã€ãããŠãããµãŒããŒããã»ã¹ã«ã¡ãã»ãŒãžãéä¿¡ããŸãã
- ãã®æ¥ç¶ããµããŒããããµãŒããŒããã»ã¹ã¯ã¡ãã»ãŒãžãåä¿¡ããã¯ã©ã€ã¢ã³ãã«çŽæ¥éä¿¡ããŸãã
3çªç®ã®æ®µèœã§ã¯ããã¥ãŒããã®ãªã¯ãšã¹ãã¯listenActions = trueã§ä»»æã®ãµãŒããŒããã»ã¹ããã«ã§ããŸãã ããã¯ãã誰ã管çããããã®ååã«åŸã£ãŠæ©èœããååãšããŠãè² è·ã®æãå°ãªããµãŒããŒãéã«åããŸãã ãããã£ãŠããµãŒããŒãšãã®ããã»ã¹éã§ã¢ã¯ã·ã§ã³ã³ãŒã«ã®ãã©ã³ã¹ããšãããŸãã
å éšéä¿¡ãã£ãã«
Jii-cometã«ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®å éšéä¿¡ãã£ãã«ãšããŠä»»æã®ã©ã€ãã©ãªã䜿çšã§ããããã«ããæœè±¡åããããŸãã çŸæç¹ã§ã¯ã sockjsã©ã€ãã©ãªãŒçšã®ã¢ããã¿ãŒãäœæãããŠãããå°æ¥ã¯socket.ioçšã«è¡šç€ºãããŸã ã
æ§æã§ã¯ããã©ã³ã¹ããŒãã¯ãã©ã³ã¹ããŒãã»ã¯ã·ã§ã³ã§å®£èšãããŸãã ããã©ã«ãã§ã¯ãåã®Jii.comet.server.transport.Sockjsã¯ã©ã¹ãšã¯ã©ã€ã¢ã³ãã®Jii.comet.client.transport.Sockjsã¯ã©ã¹ã䜿çšãããŸãã
ãã©ã³ã¹ããŒãã¯ãæ§æã«ããæ§æããã³åå®çŸ©ã§ããŸãã
comet: { className: 'Jii.comet.client.Client', transport: { className: 'Jii.comet.client.transport.Sockjs', transports: [ 'websocket', 'xhr-streaming', 'xdr-streaming', 'jsonp-polling' ] } }
çµãã
ãã¬ãŒã ã¯ãŒã¯ãµã€ã-jiiframework.ru
Github-github.com/jiisoft
affka@affka.ruã«ææ¡ãææ¡ãéã£ãŠãã ãã
ãã¬ãŒã ã¯ãŒã¯ã®ã¢ã€ãã¢ã奜ãã§ããïŒ githubã« æãã€ããŠãã ããïŒ
èšäºã®ããã²ãŒã·ã§ã³
- JiiïŒãã©ãŠã¶ã«Yii2ã¢ãŒããã¯ãã£ãåããæ¬æ Œçãªã¢ããªã±ãŒã·ã§ã³
- JiiïŒæ§æãšã¹ã±ãŒãªã³ã°
- Jii-Yii 2ã®ã¢ãŒããã¯ãã£ãåããJavaScriptãã¬ãŒã ã¯ãŒã¯
- JiiïŒYii 2ã®APIã䜿çšããNode.jsã®ã¢ã¯ãã£ãã¬ã³ãŒã
- JiiïŒYii 2ã®APIã䜿çšããNode.jsã®ãã«ã¯ãšãªãã«ããŒ