10
EWD 3 トトトトトト トトト #9 トトト ewd-xpress トトトトトトトトト M/Gateway Developments Ltd. Rob Tweed ト : トトトトトトトトトトトトト ト トト GT.M トトト : トト ト ※ トトトトトトトト Cache’ トトトトトトト

EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

Embed Size (px)

Citation preview

Page 1: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

EWD 3トレーニング・コース  #9

複雑な ewd-xpress のメッセージと応答

M/Gateway Developments Ltd.

Rob Tweed訳 : 日本ダイナシステム株式会社 嶋 芳成

GT.M 版編集 : 澤田 潔※ 本稿オリジナルは Cache’ 向けとして編纂

Page 2: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 2

複雑なメッセージ送る

• これまで、可能な限り最も単純なメッセージのみを送信してきました• type プロパティのみを持ち、他のコンテンツや

ペイロードは加えていません

• メッセージは、開発者の必要とする限り、大きく複雑なものにすることができます• まさに JavaScript オブジェクトです

EWD 3 トレーニング・コース #9

Page 3: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 3

複雑なメッセージを送信する

• メッセージ・オブジェクトの params プロパティ内にコンテンツやペイロードを定義します

  var messageObj = { type: ‘login’, params: { username: $(‘#username’).val(), password: $(‘#password’).val() } }; EWD.send(messageObj, callbackFn);

EWD 3 トレーニング・コース #9

Page 4: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 4

複雑なメッセージを処理する

• バックエンド・ハンドラーの中では、 params は、messageObj.params としてアクセスできます :

login: function(messageObj,session,send,finished) { var username = messageObj.params.username; if (username===‘’) { finished({error: ‘You must enter a username’); return; var password = messageObj.params.password; if (password === ‘’) { finished({error: ‘You must enter a password’); return; } // … その他 }

EWD 3 トレーニング・コース #9

Page 5: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 5

複雑なメッセージを送信する

• params は、必要なだけ複雑なオブジェクトにすることができます

  var messageObj = { type: ‘complex’, params: { foo: ‘bar’, subObj: { hello: ‘world’, name: ‘rob’ } arr: [‘a’, ‘b’, ‘c’] } }; EWD.send(messageObj, callbackFn);

EWD 3 トレーニング・コース #9

Page 6: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 6

複雑なメッセージを送信する

• params は、必要なだけ複雑なオブジェクトにすることができます

  var messageObj = { type: ‘complex’, params: { foo: ‘bar’, subObj: { hello: ‘world’, name: ‘rob’ } arr: [‘a’, ‘b’, ‘c’] } }; EWD.send(messageObj, callbackFn);

EWD 3 トレーニング・コース #9

バックエンドでは、var name = messageObj.params.subObj.name;

Page 7: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 7

複雑なメッセージを送信する

• params は、必要なだけ複雑なオブジェクトにすることができます

  var messageObj = { type: ‘complex’, params: { foo: ‘bar’, subObj: { hello: ‘world’, name: ‘rob’ } arr: [‘a’, ‘b’, ‘c’] } }; EWD.send(messageObj, callbackFn);

EWD 3 トレーニング・コース #9

バックエンドでは、var b = messageObj.params.arr[1];

Page 8: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 8

複雑な応答メッセージを返す

• バックエンド・ハンドラーの send() または finished() 関数が返す応答メッセージも、必要なだけ複雑にすることができます• 応答メッセージのサイズには十分注意してく

ださい• ewd-qoper8 が遅くなる可能性があります• 応答メッセージが大きくなると、 Express がブ

ラウザやクライアントに返すのに要する時間が長くなります

EWD 3 トレーニング・コース #9

Page 9: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 9

複雑な応答メッセージを返す finished({ foo: ‘bar’, myObj: { hello: ‘world’, name: ‘Rob’ } myArr: [‘a’,’b’,’c’] });

EWD 3 トレーニング・コース #9

Page 10: EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答

05/02/2023 10

複雑な応答メッセージを返す finished({ foo: ‘bar’, myObj: { hello: ‘world’, name: ‘Rob’ } myArr: [‘a’,’b’,’c’] });

EWD 3 トレーニング・コース #9

ブラウザ側のレスポンス・ハンドラー内では、responseObj.message.myObj.name

EWD.send() の callback および Pub/Sub ハンドラのいずれにおいても