å®è·µã瀺ãããã«ãåé¡ã®å€§éšåã¯è§£æ±ºçèªäœã§ã¯ãªããã·ã¹ãã ã®ã³ã³ããŒãã³ãéã®éä¿¡ãã©ã®ããã«çºçãããã«ãã£ãŠçºçããŸãã ã·ã¹ãã ã®ã³ã³ããŒãã³ãéã®éä¿¡ã«æ··ä¹±ãããå Žåãåã
ã®ã³ã³ããŒãã³ããããŸãæžã蟌ãããšããªããããã·ã¹ãã å
šäœã倱æããŸãã
ãæ³šæ èªè»¢è»ã®äžã
åé¡ãŸãã¯åé¡ã®èª¬æ
ãã°ããåã«ãCRMãERMã·ã¹ãã ãããªããã£ããªã©ã®åã³ã倧è¡ã«ãããããããžã§ã¯ãã«ããŸããŸåãçµã¿ãŸããã ããã«ãå瀟ã¯ãã¬ãžã¹ã¿ãŒçšã®ãœãããŠã§ã¢ããã³ãŒã«ã»ã³ã¿ãŒãŸã§ããªãã¬ãŒã¿ãŒãæå€§200人ãŸã§ã¬ã³ã¿ã«ã§ããå¯èœæ§ã®ãããå
æ¬çãªè£œåãçºè¡ããŸããã
ç§èªèº«ã¯ãã³ãŒã«ã»ã³ã¿ãŒã®ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã«åãçµãã§ããŸããã
ãªãã¬ãŒã¿ãŒã®ã¢ããªã±ãŒã·ã§ã³ã«æµå
¥ããã®ã¯ããã¹ãŠã®ã·ã¹ãã ã³ã³ããŒãã³ãããã®æ
å ±ã§ããããšã¯å®¹æã«æ³åã§ããŸãã ãããŠããããåäžã®ãªãã¬ãŒã¿ãŒã§ã¯ãªãããããŒãžã£ãŒãšç®¡çè
ã§ãããšããäºå®ãèæ
®ãããšãã¢ããªã±ãŒã·ã§ã³ãã©ãã ãã®ã³ãã¥ãã±ãŒã·ã§ã³ãšæ
å ±ããæ¶åãããŠçžäºã«é¢é£ãããã¹ããæ³åã§ããŸãã
ãããžã§ã¯ããæ¢ã«éå§ãããããèªäœãéåžžã«å®å®ããŠåäœããŠãããšããã·ã¹ãã ã®éææ§ã®åé¡ãå®å
šãªæé·ã®äžã§çããŸããã
ããããã€ã³ãã§ãã å€ãã®ã³ã³ããŒãã³ããããããããã¯ãã¹ãŠããŒã¿ãœãŒã¹ã§åäœããŸãã ãã ãããããã®ã³ã³ããŒãã³ãã®ã»ãšãã©ãã¹ãŠã¯ããã€ãŠã¹ã¿ã³ãã¢ãã³è£œåãšããŠèšè¿°ãããŠããŸããã ã€ãŸããã·ã¹ãã å
šäœã®èŠçŽ ãšããŠã§ã¯ãªãã販売ã®åå¥ã®æ±ºå®ãšããŠã§ãã ãã®çµæãåäžã®ïŒã·ã¹ãã ïŒAPIã¯ãªãããããã®éã®éä¿¡ã«é¢ããå
±éã®æšæºããããŸããã
説æããŸãã äžéšã®ã³ã³ããŒãã³ãã¯JSONãéä¿¡ããã誰ããã¯ããŒãå«ãè¡ãéä¿¡ããŸããå€ã¯å
éšã«ãããã誰ããã¯äžè¬ã«ãã€ããªãéä¿¡ããå¿
èŠãªåŠçãè¡ããŸãã ããããã³ãŒã«ã»ã³ã¿ãŒã®æçµã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¹ãŠãååŸããŠãäœããã®æ¹æ³ã§åŠçããå¿
èŠããããŸããã æãéèŠãªããšã¯ãããŒã¿åœ¢åŒ/æ§é ã倿Žãããããšãèªèã§ãããªã³ã¯ãã·ã¹ãã ã«ãªãããšã§ãã äžéšã®ã³ã³ããŒãã³ããæšæ¥JSONãéä¿¡ãã仿¥ã¯ãã€ããªãéä¿¡ããããšã«æ±ºããå Žåã誰ããããèŠãããšãã§ããŸããã æçµã¢ããªã±ãŒã·ã§ã³ã®ã¿ãäºæ³ã©ããã«ã¯ã©ãã·ã¥ãå§ããŸãã
ã³ã³ããŒãã³ãéã§ãçµ±äžãããéä¿¡èšèªããååšããªãããšã¯æ·±å»ãªåé¡ã«ã€ãªããããšãããã«æããã«ãªããŸããïŒç§ã¯ãã¶ã€ã³æ®µéã§åé¡ã«ã€ããŠè©±ããŠããã®ã§ãç§ã®åšãã§ã¯ãªãïŒã
æãåçŽãªã±ãŒã¹ã¯ãã¯ã©ã€ã¢ã³ããããŒã¿ã»ããã®å€æŽãèŠæ±ããå Žåã§ãã ããšãã°ãåå/ãµãŒãã¹ã®ããŒã¿ããŒã¹ãæäœããããã®ã³ã³ããŒãã³ãããä¿æãããè¥è
ã«ã¿ã¹ã¯ãåãæ¶ããŸãã 圌ã¯ä»äºãããæ°ããããŒã¿ã»ãããå®è£
ããŸãã ããããæŽæ°ã®ç¿æ¥...ãã...ã³ãŒã«ã»ã³ã¿ãŒã®ã¢ããªã±ãŒã·ã§ã³ã¯ãäºæãããšããã«åäœããªããªããŸãã
ããªãã¯ãããããã§ã«æšæž¬ããŸããã ç§ãã¡ã®ããŒããŒã¯ãããŒã¿ã»ããã ãã§ãªãã圌ã®ã³ã³ããŒãã³ããã·ã¹ãã ã«éä¿¡ããããŒã¿æ§é ã倿ŽããŸããã ãã®çµæãã³ãŒã«ã»ã³ã¿ãŒã¢ããªã±ãŒã·ã§ã³ã¯ãã®ã³ã³ããŒãã³ãã䜿çšã§ããªããªããä»ã®äŸåé¢ä¿ããã§ãŒã³ã«æ²¿ã£ãŠé£ã¶ããã«ãªããŸãã
圌ãã¯ç§ãã¡ãå®éã«äœãããããã«ã€ããŠèãå§ããŸããã ãã®çµæãæœåšçãªãœãªã¥ãŒã·ã§ã³ã«ã€ããŠæ¬¡ã®èŠä»¶ãçå®ããŸããã
äœããããŸã ãããŒã¿æ§é ã®å€æŽã¯ãã·ã¹ãã ã§çŽã¡ã«ã匷調衚瀺ãããå¿
èŠããããŸãã 誰ããã©ããã§å€æŽãè¡ãããããã®å€æŽãã·ã¹ãã ãæåŸ
ãããã®ãšäºææ§ããªãå Žåã倿Žãããã³ã³ããŒãã³ãã®ãã¹ã段éã§ãšã©ãŒãçºçããã¯ãã§ãã
äºçªç® ã ããŒã¿åã¯ã³ã³ãã€ã«äžã ãã§ãªããå®è¡æããã§ãã¯ããå¿
èŠããããŸãã
3çªç® ã å®å
šã«ç°ãªãã¹ãã«ã¬ãã«ãæã€å€æ°ã®äººã
ãã³ã³ããŒãã³ãã§äœæ¥ãããããèšè¿°èšèªã¯ããã·ã³ãã«ãªã¯ãã§ãã
4çªç® ã æ±ºå®ãã©ãã§ããããããæ±ãã®ã¯å¯èœãªéã䟿å©ã§ããã¹ãã§ãã å¯èœã§ããã°ãIDEã¯å¯èœãªéã匷調衚瀺ããå¿
èŠããããŸãã
æåã®èãã¯ãprotobufãå®è£
ããããšã§ããã ã·ã³ãã«ã§èªã¿ããããç°¡åã å³å¯ãªããŒã¿å
¥åã å»è
ãæ³šæãããã®ã®ããã§ãã ããããæ®å¿µãªããããã¹ãŠã®protobufæ§æãåçŽã«èŠããããã§ã¯ãããŸããã ããã«ãã³ã³ãã€ã«ããããããã³ã«ã§ãã远å ã®ã©ã€ãã©ãªãå¿
èŠãšããŸããããJavascriptã¯protobufã«ãã£ãŠãµããŒããããŠããããã³ãã¥ããã£äœæ¥ã®çµæã§ããã äžè¬çã«ã圌ãã¯æåŠããŸããã
次ã«ããããã³ã«ãJSONã§èšè¿°ãããšããã¢ã€ãã¢ãæµ®äžããŸããã ããŠãã©ãã»ã©ç°¡åã§ããïŒ
ããŠãããããç§ã¯èŸããã ãããŠããã®æçš¿ã¯ãç§ã®åºçºåŸã«èª°ãç¹ã«åé¡ã«ç¹ã«å¯ŸåŠãå§ããªãã£ãã®ã§ãå®äºã§ããã§ãããã
ããããã³ã³ããŒãã³ãéã®éä¿¡ã®åé¡ãåã³ãã®æœåšèœåãæå€§éã«çºæ®ããããã€ãã®å人ãããžã§ã¯ããèããŠãç§ã¯èªåã§ã¢ã€ãã¢ã®å®è£
ãéå§ããããšã«ããŸããã 以äžã§èª¬æããŸãã
ããã§ãç§ã¯ããªãã®æ³šæã«ceresãããžã§ã¯ããæç€ºããŸãã
- ãããã³ã«ãžã§ãã¬ãŒã¿ãŒ
- ãããã€ããŒ
- ã¯ã©ã€ã¢ã³ã
- ãã©ã³ã¹ããŒãã®å®è£
ãããã³ã«
ã¿ã¹ã¯ã¯æ¬¡ã®ããã«ããããšã§ããïŒ
- ã·ã¹ãã ã§ã¡ãã»ãŒãžæ§é ãèšå®ããã®ã¯ç°¡åã§ããã
- ãã¹ãŠã®ã¡ãã»ãŒãžãã£ãŒã«ãã®ããŒã¿åãå€å¥ããã®ã¯ç°¡åã§ããã
- è£å©ãšã³ãã£ãã£ãå®çŸ©ããŠåç
§ããããšãã§ããŸããã
- ãããŠãã¡ãããããããã¹ãŠãIDEã«ãã£ãŠåŒ·èª¿è¡šç€ºãããããã«
å®å
šã«èªç¶ãªæ¹æ³ã§ãçŽç²ãªJavascriptã§ã¯ãªããTypescriptããããã³ã«ã®å€æå
ã®èšèªãšããŠéžæããããšæããŸãã ã€ãŸãããããã³ã«ãžã§ãã¬ãŒã¿ãŒã¯ãJSONãTypescriptã«å€æããã ãã§ãã
ã·ã¹ãã ã§å©çšå¯èœãªã¡ãã»ãŒãžã説æããã«ã¯ãJSONãšã¯äœããç¥ãã ãã§ãã 誰ãåé¡ã¯ãªããšç¢ºä¿¡ããŠããŸãã
Hello Worldã®ä»£ããã«ãç§ã¯ããã»ã©ããã¯ãããŠããªãäŸãæäŸããŸã-ãã£ããã
{ "Events": { "NewMessage": { "message": "ChatMessage" }, "UsersListUpdated": { "users": "Array<User>" } }, "Requests": { "GetUsers": {}, "AddUser": { "user": "User" } }, "Responses": { "UsersList": { "users": "Array<User>" }, "AddUserResult": { "error?": "asciiString" } }, "ChatMessage": { "nickname": "asciiString", "message": "utf8String", "created": "datetime" }, "User": { "nickname": "asciiString" }, "version": "0.0.1" }
ãã¹ãŠããšãŠã€ããªãã·ã³ãã«ã§ãã NewMessageã€ãã³ããšUsersListUpdatedã€ãã³ããããã€ããããŸãã ããã€ãã®UsersListããã³AddUserResultãªã¯ãšã¹ããåæ§ã§ãã ããã«2ã€ã®ãšã³ãã£ãã£ããããŸããChatMessageãšUserã§ãã
ã芧ã®ãšããã説æã¯éåžžã«éæã§çè§£ãããããã®ã§ãã ã«ãŒã«ã«ã€ããŠå°ãã
- JSONã®ãªããžã§ã¯ãã¯ãçæããããããã³ã«ã®ã¯ã©ã¹ã«ãªããŸã
- ããããã£å€ã¯ãããŒã¿åå®çŸ©ãŸãã¯ã¯ã©ã¹ïŒãšã³ãã£ãã£ïŒãžã®åç
§ã§ã
- çæããããããã³ã«ã®èгç¹ãããã¹ãããããªããžã§ã¯ãã¯ãããã¹ãããããã¯ã©ã¹ã«ãªããŸããã€ãŸãããã¹ãããããªããžã§ã¯ãã¯ã芪ã®ãã¹ãŠã®ããããã£ãç¶æ¿ããŸãã
ããšã¯ããããã³ã«ãçæããŠäœ¿çšãéå§ããã ãã§ãã
npm install ceres.protocol -g ceres.protocol -s chat.protocol.json -o chat.protocol.ts -r
ãã®çµæãTypescriptã§çæããããããã³ã«ãååŸããŸãã æ¥ç¶ããŠäœ¿çšããŸãïŒ

ãã®ããããããã³ã«ã¯ãã§ã«éçºè
ã«äœããæäŸããŠããŸãïŒ
- IDEã¯ããããã³ã«ã«å«ãŸãããã®ã匷調衚瀺ããŸãã IDEã¯ãäºæ³ããããã¹ãŠã®ããããã£ã匷調衚瀺ããŸãã
- ããŒã¿åã«äœãåé¡ããããã©ããã確å®ã«äŒããTypescriptã ãã¡ãããããã¯éçºæ®µéã§è¡ãããŸããããããã³ã«èªäœã¯ãã§ã«å®è¡æã«ããŒã¿åããã§ãã¯ããéåãæ€åºãããå Žåã¯äŸå€ãã¹ããŒããŸã
- äžè¬ã«ãæ€èšŒã¯å¿ããããšãã§ããŸãã ãããã³ã«ã¯å¿
èŠãªãã¹ãŠã®ãã§ãã¯ãè¡ããŸãã
- çæããããããã³ã«ã¯ã远å ã®ã©ã€ãã©ãªãå¿
èŠãšããŸããã 圌ãåãå¿
èŠããããã¹ãŠã¯ã圌ã¯ãã§ã«å«ãŸããŠããŸãã ãããŠãããã¯éåžžã«äŸ¿å©ã§ãã
ã¯ããçæããããããã³ã«ã®ãµã€ãºã¯ãæ§ããã«èšã£ãŠãé©ããããããŸããã ãã ããçæããããããã³ã«ãã¡ã€ã«ãé©ããŠããçž®å°ãå¿ããªãã§ãã ããã
ã¡ãã»ãŒãžããããã¯ãããŠéä¿¡ã§ããŸã
import * as Protocol from '../../protocol/protocol.chat'; const message: Protocol.ChatMessage = new Protocol.ChatMessage({ nickname: 'noname', message: 'Hello World!', created: new Date() }); const packet: Uint8Array = message.stringify();
ããã§äºçŽããããšãéèŠã§ãããã±ããã¯ãã€ãã®é
åã«ãªããŸããããã¯ããã©ãã£ãã¯è² è·ã®èгç¹ããèŠãŠéåžžã«é©åã§æ£ãããã®ã§ããåãJSONã®ãã³ã¹ãããéä¿¡ãããšããã¡ããé«äŸ¡ã«ãªããŸãã ãã ãããããã³ã«ã«ã¯1ã€ã®ç§trickããããŸãããããã°ã¢ãŒãã§ã¯ãèªã¿åãå¯èœãªJSONãçæããããããéçºè
ã¯ãã©ãã£ãã¯ãã調ã¹ããŠäœãèµ·ãããã確èªã§ããŸãã
ããã¯å®è¡æã«çŽæ¥è¡ãããŸãã
import * as Protocol from '../../protocol/protocol.chat'; const message: Protocol.ChatMessage = new Protocol.ChatMessage({ nickname: 'noname', message: 'Hello World!', created: new Date() });
ãµãŒããŒïŒãŸãã¯ä»ã®åä¿¡è
ïŒã§ãã¡ãã»ãŒãžãç°¡åã«è§£åã§ããŸãã
import * as Protocol from '../../protocol/protocol.chat'; const smth = Protocol.parse(packet); if (smth instanceof Error) {
ãã®ãããã³ã«ã¯ããã¹ãŠã®äž»èŠãªããŒã¿ã¿ã€ãããµããŒãããŠããŸãã
çš®é¡ | å€ | 説æ | ãµã€ãºããã€ã |
---|
utf8String | | UTF8ãšã³ã³ãŒããããæåå | x |
asciiString | | ã¢ã¹ããŒæåå | 1æå-1ãã€ã |
int8 | -128ãã127 | | 1 |
int16 | -32768ãã32767 | | 2 |
int32 | -2147483648ãã2147483647 | | 4 |
uint8 | 0ãã255 | | 1 |
uint16 | 0ãã65535 | | 2 |
uint32 | 0ãã4294967295 | | 4 |
float32 | 1.2x10 -38ãã3.4x10 38 | | 4 |
float64 | 5.0x10 -324ãã1.8x10 308 | | 8 |
ããŒã«å€ | | | 1 |
ãããã³ã«å
ã§ã¯ããããã®ããŒã¿åã¯ããªããã£ããšåŒã°ããŸãã ãã ãããããã³ã«ã®ãã1ã€ã®æ©èœã¯ãç¬èªã®ããŒã¿åïŒã远å ã®ããŒã¿åããšåŒã°ããïŒã远å ã§ããããšã§ãã
ããšãã°ã ChatMessageã«ã¯datetimeããŒã¿åã®ãã£ãŒã«ããäœæãããŠããããšã«ãæ°ã¥ãã§ãããã ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ã¯ããã®ã¿ã€ãã¯Dateã«å¯Ÿå¿ãããããã³ã«å
ã§ã¯uint32ãšããŠä¿åïŒããã³éä¿¡ïŒãããŸãã
ãããã³ã«ã«ã¿ã€ãã远å ããã®ã¯éåžžã«ç°¡åã§ãã ããšãã°ã é»åã¡ãŒã«ã®ããŒã¿åãå¿
èŠãªå Žåã¯ããããã³ã«ã®æ¬¡ã®ã¡ãã»ãŒãžã«ã€ããŠèšããŸãã
{ "User": { "nickname": "asciiString", "address": "email" }, "version": "0.0.1" }
ããªããããå¿
èŠãããã®ã¯ãã¡ãŒã«ã¿ã€ãã®å®çŸ©ãæžãããšã ãã§ãã
export const AdvancedTypes: { [key:string]: any} = { email: {
以äžã§ãã ãããã³ã«ãçæããããšã«ãããæ°ããé»åã¡ãŒã«ããŒã¿ã¿ã€ãã®ãµããŒããåŸãããŸã ã ééã£ãã¢ãã¬ã¹ã§ãšã³ãã£ãã£ãäœæããããšãããšããšã©ãŒãçºçããŸã
const user: Protocol.User = new Protocol.User({ nickname: 'Brad', email: 'not_valid_email' }); console.log(user);
ãã...
Error: Cannot create class of "User" due error(s): - Property "email" has wrong value; validation was failed with value "not_valid_email".
ãã®ããããããã³ã«ã¯åã«ãäžæ£ãªãããŒã¿ãã·ã¹ãã ã«èš±å¯ããŸããã
æ°ããããŒã¿åãå®çŸ©ãããšãã«ãããã€ãã®éèŠãªããããã£ãæå®ããããšã«æ³šæããŠãã ããã
- binaryType-ããŒã¿ã®ä¿åããšã³ã³ãŒãããã³ãŒãã«äœ¿çšãããããªããã£ãããŒã¿åãžã®åç
§ã ãã®å Žåãã¢ãã¬ã¹ãASCIIæååã§ããããšã瀺ããŸãã
- tsTypeã¯ãJavascriptã¿ã€ããžã®åç
§ã§ããã€ãŸããJavascriptç°å¢ã§ã®ããŒã¿ã¿ã€ãã®è¡šçŸæ¹æ³ã§ãã ãã®å Žåã æååã«ã€ããŠè©±ããŠããŸã
- ãŸãããããã³ã«ã®çææã«ã®ã¿æ°ããããŒã¿åãå®çŸ©ããå¿
èŠãããããšã«ã泚æããŠãã ããã åºåã§ã¯ãæ°ããããŒã¿åãæ¢ã«å«ãçæããããããã³ã«ãååŸããŸãã
ããã§ããã¹ãŠã®ãããã³ã«æ©èœã«é¢ãã詳现æ
å ±ãceres.protocolã§èŠã€ããããšãã§ããŸãã
ãããã€ããŒãšé¡§å®¢
æŠããŠããããã³ã«èªäœã䜿çšããŠéä¿¡ãæŽçã§ããŸãã ãã ãããã©ãŠã¶ãŒãšnodejsã«ã€ããŠè©±ããŠããå Žåã¯ããããã€ããŒãšã¯ã©ã€ã¢ã³ãã䜿çšã§ããŸãã
ã客æ§
äœæ
ã¯ã©ã€ã¢ã³ããäœæããã«ã¯ãã¯ã©ã€ã¢ã³ããšãã©ã³ã¹ããŒããå¿
èŠã§ãã
èšçœ®
äœæ
import Transport, { ConnectionParameters } from 'ceres.consumer.browser.ws'; import Consumer from 'ceres.consumer';
ã¯ã©ã€ã¢ã³ããšãããã€ããŒã¯ããããã³ã«å°çšã«èšèšãããŠããŸãã ã€ãŸãããããã³ã«ïŒceres.protocolïŒã§ã®ã¿æ©èœããŸãã
ã€ãã³ã
ã¯ã©ã€ã¢ã³ããäœæãããåŸãéçºè
ã¯ã€ãã³ãããµãã¹ã¯ã©ã€ãã§ããŸã
import * as Protocol from '../../protocol/protocol.chat'; import Transport, { ConnectionParameters } from 'ceres.consumer.browser.ws'; import Consumer from 'ceres.consumer';
ã¯ã©ã€ã¢ã³ãã¯ãã¡ãã»ãŒãžããŒã¿ãå®å
šã«æ£ããå Žåã«ã®ã¿ã€ãã³ããã³ãã©ãŒãåŒã³åºãããšã«æ³šæããŠãã ããã ã€ãŸããã¢ããªã±ãŒã·ã§ã³ã¯äžæ£ãªããŒã¿ããä¿è·ããã NewMessageã€ãã³ããã³ãã©ãŒã¯åžžã«Protocol.Events.NewMessageã®ã€ã³ã¹ã¿ã³ã¹ãåŒæ°ãšããŠåŒã³åºãããŸãã
åœç¶ãã¯ã©ã€ã¢ã³ãã¯ã€ãã³ããçæã§ããŸãã
consumer.emit(new Protocol.Events.NewMessage({ message: 'This is new message' })).then(() => { console.log(`New message was sent`); }).catch((error: Error) => { console.log(`Fail to send message due error: ${error.message}`); });
ã€ãã³ãåã¯ã©ãã«ãæå®ããããããã³ã«ããã¯ã©ã¹ãžã®åç
§ã䜿çšãããããã®ã€ã³ã¹ã¿ã³ã¹ãæž¡ãã ãã§ãã
ã¿ã€ã{ [key: string]: string }
åçŽãªãªããžã§ã¯ãã2çªç®ã®åŒæ°ãšããŠæå®ããããšã«ãããéãããåä¿¡è
ã°ã«ãŒãã«ã¡ãã»ãŒãžãéä¿¡ããããšãã§ããŸãã cereså
ã§ã¯ããã®ãªããžã§ã¯ãã¯queryãšåŒã°ããŸã ã
consumer.emit( new Protocol.Events.NewMessage({ message: 'This is new message' }), { location: "UK" } ).then(() => { console.log(`New message was sent`); }).catch((error: Error) => { console.log(`Fail to send message due error: ${error.message}`); });
ãããã£ãŠã { location: "UK" }
远å ã§æå®ããããšã«ãããèªåã®äœçœ®ãUKã§ãããšç¹å®ãã顧客ã®ã¿ããã®ã¡ãã»ãŒãžãåä¿¡ããããã«ãªããŸãã
ã¯ã©ã€ã¢ã³ãèªäœãç¹å®ã®ã¯ãšãªã«é¢é£ä»ããã«ã¯ã refã¡ãœãããåŒã³åºãã ãã§ãã
consumer.ref({ id: '12345678', location: 'UK' }).then(() => { console.log(`Client successfully bound with query`); });
ã¯ã©ã€ã¢ã³ããqueryã«æ¥ç¶ããåŸã圌ã¯ãå人ããŸãã¯ãã°ã«ãŒããã¡ãã»ãŒãžãåä¿¡ããæ©äŒããããŸãã
ãåãåãã
ãªã¯ãšã¹ããã§ããŸã
consumer.request( new Protocol.Requests.GetUsers(),
2çªç®ã®åŒæ°ãšããŠæåŸ
ãããçµæïŒ Protocol.Responses.UsersList ïŒãæå®ããããšã«æ³šæãã䟡å€ããããŸããã€ãŸããå¿çãUsersListã®ã€ã³ã¹ã¿ã³ã¹ã§ããå Žåã«ã®ã¿ãèŠæ±ãæ£åžžã«å®äºããŸããã€ããŸãã ç¹°ãè¿ããŸãããããã«ããã誀ã£ãããŒã¿ãåŠçããããšããªããªããŸãã
ã¯ã©ã€ã¢ã³ãèªèº«ãããªã¯ãšã¹ããåŠçã§ãã人ãšè©±ãããšãã§ããŸãã ãããè¡ãã«ã¯ããªã¯ãšã¹ãã®ã責任è
ããšããŠèªåèªèº«ããèå¥ãããã ãã§ãã
function processRequestGetUsers(request: Protocol.Requests.GetUsers, callback: (error: Error | null, results : any ) => any) {
ãªãã·ã§ã³ã§ã3çªç®ã®åŒæ°ãšããŠãã¯ã©ã€ã¢ã³ãã®èå¥ã«äœ¿çšã§ããã¯ãšãªãªããžã§ã¯ããæå®ã§ããããšã«æ³šæããŠãã ããã ãããã£ãŠã誰ããquery ãäŸãã°{ location: "RU" }
ã§ã¯ãšãªãéä¿¡ããå Žåã圌ã®ã¯ãšãª{ location: "UK" }
ãããã¯ã©ã€ã¢ã³ãã¯ãã®ãããªãªã¯ãšã¹ããåä¿¡ããŸããã
ã¯ãšãªã«ã¯ãç¡å¶éã®æ°ã®ããããã£ãå«ããããšãã§ããŸãã ããšãã°ã次ãæå®ã§ããŸã
{ location: "UK", type: "managers" }
次ã«ãå®å
šãªã¯ãšãªäžèŽã«å ããŠã次ã®ã¯ãšãªãæ£åžžã«åŠçããŸãã
{ location: "UK" }
ãŸãã¯
{ type: "managers" }
ãããã€ããŒ
äœæ
ãããã€ããŒãäœæããïŒããã³ã¯ã©ã€ã¢ã³ããäœæããïŒã«ã¯ããããã€ããŒãšãã©ã³ã¹ããŒããå¿
èŠã§ãã
èšçœ®
äœæ
import Transport, { ConnectionParameters } from 'ceres.provider.node.ws'; import Provider from 'ceres.provider';
ãããã€ããŒãäœæãããç¬éãããã¯ã©ã€ã¢ã³ãããã®æ¥ç¶ãåãå
¥ããããšãã§ããŸãã
ã€ãã³ã
ã¯ã©ã€ã¢ã³ãã ãã§ãªãããããã€ããŒã¯ã¡ãã»ãŒãžãããªãã¹ã³ãããŠã¡ãã»ãŒãžãçæã§ããŸãã
èã
çæãã
provider.emit(new Protocol.Events.NewMessage({ message: 'This message from provider' }));
ãåãåãã
åœç¶ããããã€ããŒã¯ãªã¯ãšã¹ããããªãã¹ã³ãã§ããŸãïŒããå¿
èŠããããŸãïŒ
function processRequestGetUsers(request: Protocol.Requests.GetUsers, clientID: string, callback: (error: Error | null, results : any ) => any) { console.log(`Request from client ${clientId} was gotten.`);
ã¯ã©ã€ã¢ã³ããšã®éãã¯1ã€ã ãã§ãããããã€ããŒã¯ããªã¯ãšã¹ãæ¬æã«å ããŠãæ¥ç¶ãããŠãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«èªåçã«å²ãåœãŠãããäžæã®clientIdãåãåããŸãã
äŸ
å®éãããã¥ã¡ã³ããŒã·ã§ã³ããã®æç²ã§éå±ããããã¯ãããŸãããçãã³ãŒããèŠãæ¹ãç°¡åã§é¢çœããšæããŸãã
ãœãŒã¹ãããŠã³ããŒãããŠããã€ãã®ç°¡åãªæé ãå®è¡ããã ãã§ããã£ããã®äŸãç°¡åã«ã€ã³ã¹ããŒã«ã§ããŸãã
ã¯ã©ã€ã¢ã³ãã®ã€ã³ã¹ããŒã«ãšèµ·å
cd chat/client npm install npm start
ã¯ã©ã€ã¢ã³ãã¯httpïŒ// localhostïŒ3000ã§å©çšå¯èœã«ãªããŸãã ã¯ã©ã€ã¢ã³ãã§ããã€ãã®ã¿ããããã«éããŠããéä¿¡ãã確èªããŸãã
ãããã€ããŒïŒãµãŒããŒïŒã®ã€ã³ã¹ããŒã«ãšèµ·å
cd chat/server npm install ts-node ./server.ts
ts-nodeããã±ãŒãžã«ç²ŸéããŠããã¯ãã§ãããããã§ãªãå Žåã¯ãTSãã¡ã€ã«ãå®è¡ã§ããŸãã ã€ã³ã¹ããŒã«ããªãå Žåã¯ããµãŒããŒãã³ã³ãã€ã«ããŠããJSãã¡ã€ã«ãå®è¡ããŸãã
cd chat/server npm run build node ./build/server/server.js
ãªã«ïŒ åã³ïŒïŒ
ãªãå°çãå¥ã®èªè»¢è»ãçºæããã®ãã«ã€ããŠã®è³ªåãäºæ³ããŠããŸãããããããããBMWã®ããŒãã³ã¢ãžã§ã€ããŒã«è³ããŸã§ã®éåžžã«å€ãã®ãœãªã¥ãŒã·ã§ã³ããã§ã«è§£æ±ºãããŠãããããç§ã¯ãããç§ã«ãšã£ãŠè峿·±ããšããèšââããŸããã ãããžã§ã¯ãå
šäœã¯ã圌ã®ä»äºããã®äœæã«ããµããŒããªãã§å人çãªã€ãã·ã¢ããã®ã¿ã§è¡ãããŸããã
ãããããªãã®ãã£ãŒãããã¯ãç§ã«ãšã£ãŠç¹ã«äŸ¡å€ãããçç±ã§ãã ã©ããããããããªããããæ°ã«ãããããã«ãç§ã¯githubã®ãã¹ãŠã®æã«ã€ããŠãç§ã¯ãã ã¹ã¿ãŒãstrokeã§ãããšãçŽæããããšãã§ããŸãïŒç§ã¯æ§ããã«èšã£ãŠå«ãã§ãïŒã ãã©ãŒã¯ã«ã€ããŠã¯ãããŒããç§ã¯åœŒã®ããã·ã³ãã¹ã¯ã©ããããŸã... brrrrã
ãã ã¹ã¿ãŒã¯ç§ã®ãã®ã§ã¯ãªããæ¯åã®ãã ã¹ã¿ãŒã§ãã
ããã«ãæ°é±éã®ãã¡ã«ããããžã§ã¯ãã¯ç§ã®ä»¥åã®ååïŒæçš¿ã®åé ã§è¿°ã¹ãããã¢ã«ãã¡çãäœã§ãããã«èå³ãæã£ãŠãã人ïŒã«ãã¹ããè¡ãäºå®ã§ãã ç®æšã¯ãè€æ°ã®ã³ã³ããŒãã³ãã§ãããã°ããã³å®è¡ããããšã§ãã ããŸãããããšãæ¬åœã«é¡ã£ãŠããŸãã
ãªã³ã¯ãšããã±ãŒãž
ãããžã§ã¯ãã¯2ã€ã®ãªããžããªã«å容ãããŠããŸãã
- ceresã®ãœãŒã¹ã³ãŒãïŒceres.providerãceres.consumerãããã³çŸåšå©çšå¯èœãªãã¹ãŠã®ãã©ã³ã¹ããŒãã
- ceres.protocolãããã³ã«ãžã§ãã¬ãŒã¿ãŒã®ãœãŒã¹
NPM次ã®ããã±ãŒãžãå©çšå¯èœ
è¯ããŠè»œãã