松尾です。 大津さん 返信ありがとうございます。 KOBAさんやJACKさんに教えて頂いた内容で socket_c = socket; が意味不明の文であることは理解しています。 ※今となれば結構お恥ずかしいですね。
サンプル拝見させて頂きました。コテコテの汎用系人間としてどうしても出ない発想ですね。 企業システムへの導入などもできそうな気がします。 サンプルとても素敵ですね。 ・生産管理システム上でアラートのリアルタイム通知 ・既存システムのログをネットワーク介してリアルタイムに参照する。 とかできそうですね。 2013年1月25日金曜日 17時53分08秒 UTC+9 shigeki: > > 大津です。 > > ご本人が解決しているんですが、サンプルを作りかけだったので私の意見を。 > > # この質問を元に自分主催のNode.js勉強会の課題を作らさせていただきまし > た。ありがとうございます。 > > (2013/01/25 13:33), matton wrote: > > (同じサーバなのに、わざわざ自分自身にソケットを経由するとか) > > バッチからのURLデータ渡しをクライアント処理と思い込んでいたのが問題でした。 > > なのでクライアントとして接続する必要があると考え、ソケット経由に・・・ > > そんな必要ないですね。 > > 私も最初なぜ?? と不思議に思ってたのですが、よくよく考えてみるとそれほ > どおかしいことではないんじゃないかと思い始めました。 > > DB監視のエージェントの方は WS をしゃべれないわけで、 HTTP GET <-> WS の > リレーを作って接続するのは*あり*じゃないかなと思います。(今回たまたま > ローカルで同じポートだっただけ) > > 監視エージェントを受けるロジックと、端末への配信ロジックをきっちり分けら > れれば、今後様々な監視端末からの情報を受け取ったりする拡張も容易になる > し、各種 room や channelId の使い分けもやりやすくなるんじゃないかと思い > ます。 > > 以前のコードの一番問題点は、 > > socket_c = socket; > > の部分で、2つのロジックをごちゃごちゃにしている元凶じゃないかかと個人的 > には見てます。 > > ということで、私の方でサンプルの方を作ってました。 > > https://gist.github.com/4632789 > > roomserver.js (端末配信用) > wsrelay.js (監視エージェントの HTTP GET -> WS リレー用) > > の2つのモジュールからなっています。 > > それぞれ別々に動作させることもできますし、 start.js では両方とも同じ > port で動作させています。 > (index.html は Jxck さんのを拝借して少し変えました。) > > まぁいろいろ賛否両論あるとは思いますが、こういうアプローチもあるというこ > とで、皆さんのフィードバックがあるとうれしいです。 > > > で、もうひとつ質問なんですが・・・disconnectしていないソケットってどうな > > るんですか? > > webは無理ですが、iphoneやandroidで接続した場合、nodeを停止して起動しても > > 再度接続されます。 > > もしかするとiphoneやandroidは接続しっぱなしだけかもしれませんが。 > > 確か http.Server サーバのセッションは 2分ぐらいのアイドルタイムアウトが > あったけど WS で upgrade するとずっと接続しっぱなしだと思います。 > > 今回 disconnect の処理を入れませんでしたが、タイムアウト処理ぐらいはいれ > るべきかなと思ってます。 > > --
