Re: [nodejs_jp:863] node.jsとネイティブアプリで通信を行う方法について
大津です。 これ、 sleep(1) を入れないと、イベントループが io poll で call back を処 理する前に各スレッドが async fd を上書きしちゃうからだと思います。(ちゃ んと調べてないですが) uv_async_tはスレッド毎に必要なようです。 1つのuv_async_tを重複して使っていたのが原因でした。 スレッド毎に用意したら正しく動きました。 だから最初に書いた通り、 えー、 worker の中から uv_async_send() してるんですかぁ。 これ async ハンドラが thread safe じゃないような気がしますが、大丈 夫なんかなぁ? ということなんですよね。 uv_check()を使ったほうがスッキリしてますね。 uv_check()は イベント処理毎に設定した関数を呼び出すのですね、なるほど。 全イベント処理毎に呼ばれるのでしょうか? 実は、この辺をわかりやすく図にして書いてます。 (node-v0.9の初期の図なので今は若干変わってます。) http://html5.ohtsu.org/new_setImmediate_semantics.png この図、結構評判良くて、 isaacs からも使いたいと頼まれてますが、まだ最新 版書いてない状況です。(早くしないと) アドオン化して、Node.jsコールバック関数も呼び出せました。 多少、整理して近いうちに投稿します。 楽しみにして待ってます。 -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
Re: [nodejs_jp:866] node.jsとネイティブアプリで通信を行う方法について
質問者の竹内です。 大津さん、質問に対応して頂きありがとうございました。 うー、「既存の任意のアプリの(どんなのかわからない)出力を、このアプリに 一切手を加えず別のアプリの入力に渡す何か良い方法はないか?」という一般的 な質問になりますよね。ホント環境依存です。 やはり、そんな虫のいい話はないようですね。 せめてファイル出力に限定されるんなら fs.watch() を使うぐらいですが、 この方法が一番現実的な気がしてきました。 どちらにしても既存アプリにWeb経由のコンソールメッセージ出力を組み込むのは難しいようですね。 2013年4月10日水曜日 18時04分44秒 UTC+9 tommie: tommieです。 (2013/04/10 12:44), Shigeki Ohtsu wrote: 大津です。 まだ worker 内の sleep(1) に依存した実装になってますよね。 (sleep(1) を外すと uv_async_send() が正常に動作しなくなる) sleep()なしでも正しく動くように直しました。 だいぶゴテゴテになってしまいました。w https://gist.github.com/open-tommie/5342559 これ、 sleep(1) を入れないと、イベントループが io poll で call back を処 理する前に各スレッドが async fd を上書きしちゃうからだと思います。(ちゃ んと調べてないですが) uv_async_tはスレッド毎に必要なようです。 1つのuv_async_tを重複して使っていたのが原因でした。 スレッド毎に用意したら正しく動きました。 先に述べたよう uv_check() を使った実装だとこんな感じになります。 (これは worker 内に sleep(1) は必要ないです) https://gist.github.com/shigeki/5351299 uv_check()を使ったほうがスッキリしてますね。 uv_check()は イベント処理毎に設定した関数を呼び出すのですね、なるほど。 全イベント処理毎に呼ばれるのでしょうか? アドオン化して、Node.jsコールバック関数も呼び出せました。 多少、整理して近いうちに投稿します。 -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
Re: [nodejs_jp:867] Re: socket.ioが動きません
2013年4月10日水曜日 18時20分01秒 UTC+9 Jxck: なぜかポート80で動かすと、エラーが出て、1337に変えたら動きました。 ここだけ見ると、 sudo などをつけ忘れているか、 80 番がすでに使われてるように見えますね。 起動できてないサーバに Socket.IO が問いあわせをして、失敗してるだけかもしれません。 (1337 で意図した動作をしてるなら、ソースも Socket.IO も問題ないはずですね) 80 番ポートでサーバを起動する場合は管理権限が必要です。それをつけているなら、すでに何か HTTTP サーバが動いていないか確認して見てください。 Jxck 2013/04/10 12:59、遠州律夫 3.14pr...@gmail.com javascript: のメッセージ: なぜかポート80で動かすと、エラーが出て、 1337に変えたら動きました。 ありがとうございます。でも、サーバーは、rootのsshアカウントと、 node用のアカウントがありまして、 nodeアカウントを使わないと、nvmとか、mongoとかが 動かないんで、管理者権限なしでできませんか? -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
Re: [nodejs_jp:871] Re: socket.ioが動きません
2013年4月10日水曜日 20時01分45秒 UTC+9 Jxck: ありがとうございます。でも、サーバーは、rootのsshアカウントと、 node用のアカウントがありまして、 nodeアカウントを使わないと、nvmとか、mongoとかが 動かないんで、管理者権限なしでできませんか? サーバがどういう設定や構成になってるのかわかららないですが、 その node用アカウント に権限が無いなら出来ないです。 どんなサーバを使ってるのかわからないけど、そのサーバの管理者に聞いてみください。 Jxck -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.comjavascript:にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。 rootとかの問題ではなさそうです。 実際にIEで動いてますから、ほかの何かが引っかかってるみたいです。 -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
Re: [nodejs_jp:873] Re: socket.ioが動きません
http://3-14p.c.node-ninja.com/ IE は持ってないですが、 Chrome では Network のタブで見ると WebSocket でアクセスできているようです。 この状況だと、小松さんが言うように、何か使ってる PC やネットワーク環境特有の何かな可能性がありますね。 Jxck 2013年4月10日 21:04 KOMATSU Kensaku kensaku.koma...@gmail.com: 小松です。 すみません、横からで・・・ 僕の環境から、http://3-14p.c.node-ninja.com/ にアクセスしてみましたが、IE10, Chrome26/28, FF19 いづれでも WebSocketでアクセスできました。 なので、遠州さんの端末環境に依存しているかもしれないですね。IEでいけて、Chromeはダメってことは 普通のproxy設定とかでは無いと思いますが。。。 #変に悪さをしちゃうChrome拡張が入っているとか??? 2013年4月10日 20:37 遠州律夫 3.14produ...@gmail.com: 2013年4月10日水曜日 20時04分33秒 UTC+9 Jxck: なぜかIEでは動きました。 話が変わってますね。 そもそもサーバは 80 番ポートで起動したんですか?してないんですか? ブラウザが怪しいのか、サーバが起動してない問題なのか、 まずそこをはっきりしましょう。 Jxck -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。 はい。ポート80で動いてますよ。 証拠:http://3-14p.c.node-ninja.com/ これを、chromeとIEで見てみてください。 IEはちゃんと動きます。 chromeはwebsocket接続→失敗→xhr-polling→失敗→jsonp→失敗→connect-failedで更新 という順番で、失敗します。Chromeで動かしたいです。どうしればいいでしょうか -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。 -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。 -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。