Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

internal message が使えない -> custom message と一緒にする #12

Open
shundroid opened this issue Jul 17, 2016 · 9 comments
Open
Assignees

Comments

@shundroid
Copy link
Member

No description provided.

@shundroid
Copy link
Member Author

@Babibubebon さん

https://github.com/shundroid/sphero-websocket/commits/%2312

このブランチで、internalCommand を customMessage としてみました。
しかし、この状態だと、 getList などの customMessage を、server.js に実装しているため、
付属の client 以外でも使えてしまいますが、どうでしょう。これでいいでしょうか。

もし、getList などの customMessage を、付属の client 独自のものにするならば、
付属の client 用に、client.js(下のコード) みたいなのを作って、
node client.js して実行するのがいいかと思いました。

client.js

// server.js を require
var spheroWebSocket = require("./server");
var config = require("./config");
var spheroServer = spheroWebSocket(config).spheroServer;

spheroServer.events.on("addClient", function(key, client) {
  client.on("arriveCustomMessage", function(name, data, mesId) {
    switch (name) {
      case "getList":
        client.sendCustomMessage("list", spheroServer.getList(), mesId);
        break;
      case "use":
        client.setLinkedOrb(spheroServer.getOrb(data));
        break;
    }
  });
});

@Babibubebon
Copy link
Member

Babibubebon commented Jul 18, 2016

ありがとうございます。
付属のclientというのは/client/sphero-client.jsのことですよね?

「spheroServerが持つOrbのリストを返す」、「クライアントが使うOrbを選択する」
という機能をsphero-websocketサーバが提供する、という仕様ならば、特に分離せずでOKだとは思います。

が、恐らくcustomMessageというのは/client/sphero-client.jsに依存しないコマンドを実装するのに使いたくて、
でもinternalCommandとcustomMessageを一緒にしたらそれがごちゃ混ぜになっているのが気持ち悪いんですね。

@shundroid
Copy link
Member Author

ご返信ありがとうございます。

まず、

  • /client/index.html -> example 的な感じ
  • /client/sphero-client.js -> /client/index.html もしくは独自に作ったclient(onigo-controllerなど)から、server と通信するためのもの

みたいな感じであっていますでしょうか。

「spheroServerが持つOrbのリストを返す」、「クライアントが使うOrbを選択する」
という機能をsphero-websocketサーバが提供する、という仕様

どうしましょう。
もし仕様とするならば、develop ブランチの現状 sphero-client.js に依存するような形(use、list関数の定義)でいい感じもします。

もし仕様とせず、/client/index.html 独自の機能として「use、list」を定義するのであれば、
customMessage としてやり取りするのがいいと思いました。

しかし、現状だと、
client/index.html の独自の機能とする場合、server.js 側で listenCustomMessage しなければいけなくて、
それが独自の機能なのに server.js にある、というのは仰る通り気持ち悪いと思います。

となると、独自の機能とするならば、上の client.js のように、
server.js にて listenCustomMessage するのではない方法を使った方がいい気がします。

が、恐らくcustomMessageというのは/client/sphero-client.jsに依存しないコマンドを実装するのに使いたくて

そうです!それがしたくて実装しました。

@Babibubebon
Copy link
Member

Babibubebon commented Jul 20, 2016

返信遅くなりました。

となると、独自の機能とするならば、上の client.js のように、
server.js にて listenCustomMessage するのではない方法を使った方がいい気がします。

そうですね。server.jsからuselistは分離することにしましょう!

@shundroid
Copy link
Member Author

ご返信ありがとうございます。

そうですね。server.jsからuse、listは分離することにしましょう!

ありがとうございます。
client.js として実装するする形でよろしいでしょうか。
とりあえずそうして実装します。

@shundroid
Copy link
Member Author

@Babibubebon さん

https://github.com/shundroid/sphero-websocket/blob/%2312/client.js

こんな感じで実装しました。

そうすると、server.js の 27 行目あたりから、client 用の httpServer を立てているのですが、
それも client.js に持ってきた方がいいでしょうか。
もってくるのであれば、sphero-client.js も client.js に持ってきてしまってよいのでしょうか。

@Babibubebon
Copy link
Member

そうすると、server.js の 27 行目あたりから、client 用の httpServer を立てているのですが、
それも client.js に持ってきた方がいいでしょうか。
もってくるのであれば、sphero-client.js も client.js に持ってきてしまってよいのでしょうか。

そうですねぇ。ちょっとサーバの役割が分かりにくくなってしまいますね。
今日もし来られるのであれば少し相談しましょうか。

@shundroid
Copy link
Member Author

@Babibubebon ぼくは今日行きます。Babibubebon さんも今日こられますか?

@Babibubebon
Copy link
Member

@shundroid はい、行きまーす

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants