Upload
kiyoshi-sawada
View
121
Download
0
Embed Size (px)
Citation preview
EWD 3トレーニング・コース #9
複雑な ewd-xpress のメッセージと応答
M/Gateway Developments Ltd.
Rob Tweed訳 : 日本ダイナシステム株式会社 嶋 芳成
GT.M 版編集 : 澤田 潔※ 本稿オリジナルは Cache’ 向けとして編纂
05/02/2023 2
複雑なメッセージ送る
• これまで、可能な限り最も単純なメッセージのみを送信してきました• type プロパティのみを持ち、他のコンテンツや
ペイロードは加えていません
• メッセージは、開発者の必要とする限り、大きく複雑なものにすることができます• まさに JavaScript オブジェクトです
EWD 3 トレーニング・コース #9
05/02/2023 3
複雑なメッセージを送信する
• メッセージ・オブジェクトの params プロパティ内にコンテンツやペイロードを定義します
var messageObj = { type: ‘login’, params: { username: $(‘#username’).val(), password: $(‘#password’).val() } }; EWD.send(messageObj, callbackFn);
EWD 3 トレーニング・コース #9
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
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
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;
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];
05/02/2023 8
複雑な応答メッセージを返す
• バックエンド・ハンドラーの send() または finished() 関数が返す応答メッセージも、必要なだけ複雑にすることができます• 応答メッセージのサイズには十分注意してく
ださい• ewd-qoper8 が遅くなる可能性があります• 応答メッセージが大きくなると、 Express がブ
ラウザやクライアントに返すのに要する時間が長くなります
EWD 3 トレーニング・コース #9
05/02/2023 9
複雑な応答メッセージを返す finished({ foo: ‘bar’, myObj: { hello: ‘world’, name: ‘Rob’ } myArr: [‘a’,’b’,’c’] });
EWD 3 トレーニング・コース #9
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 ハンドラのいずれにおいても