QiMessaging Javascript (qiSDK js bindings) を読む
5929 ワード
はじめに
QiMessaging Javascript とは?
-
JavaScript から NAOqi API を呼び、Pepper, NAO 等を操作できるライブラリです。
この記事は?
- そんなライブラリのソースコードを読んで、シーケンス図・やり取りされるデータの内容等を簡単にまとめています。ライブラリ自体は 151 行しかありません。
bash
$ wc -l libs/qi/2/qi.js
151 libs/qi/2/qi.js
シーケンス図
図について
- 大まかな流れが分かれば良いと思っているので、結構大雑把です。
- また、Promise について、UML ではどう書いたら良いのかを知らないので、何となく読めれば良いか、くらいの適当な感じで書いてます。
内容について
- 大きく「セッション作成」(create session)、「モジュールのオブジェクト取得」(create module object)、「モジュールのメソッド呼び出し」(call method)部分に分けて書いています。
データ
- js - NAOqi 間のデータ送受信は Socket.IO (v0.9.11) が使われています。
js -> NAOqi
- "call" イベントとして、以下のような形式のデータを送信します。
{
"idm": IDM(int),
{
"obj": OBJ(string),
"member": MEMBER(string),
"args": [
...
]
}
- idm: セッション内のオブジェクトを識別するための ID
- obj: モジュール名
- member: メソッド名
- args: メソッドの引数
NAOqi -> js
- "reply" イベントで以下のような形式のデータを受信します。
{
"idm": IDM(int),
"result": {
"pyobject": PYOBJECT(string),
"metaobject": {
"methods": [
{ "name": NAME(string) },
...
],
"signals": [
{ "name": NAME(string) },
...
],
"properties": [
{ "name": NAME(string) },
...
]
}
}
}
- idm: セッション内のオブジェクトを識別するための ID
- result: リクエスト結果
- pyobject:
- metaobject: モジュール情報
- methods: メソッド一覧
- signals: シグナル一覧?
- properties: プロパティ一覧?
感想
- Socket.IO でデータをやり取りするだけのようですね。
- Socket.IO (v0.9.11) というのが残念なところです。
Author And Source
この問題について(QiMessaging Javascript (qiSDK js bindings) を読む), 我々は、より多くの情報をここで見つけました https://qiita.com/Suna/items/92df137b1c0d11edadf1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .