Re: [nodejs_jp:863] node.jsとネイティブアプリで通信を行う方法について

2013-04-10 スレッド表示 Shigeki Ohtsu
大津です。

 これ、 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とネイティブアプリで通信を行う方法について

2013-04-10 スレッド表示 竹内佑介
質問者の竹内です。

大津さん、質問に対応して頂きありがとうございました。

うー、「既存の任意のアプリの(どんなのかわからない)出力を、このアプリに 
一切手を加えず別のアプリの入力に渡す何か良い方法はないか?」という一般的 
な質問になりますよね。ホント環境依存です。 

やはり、そんな虫のいい話はないようですね。

せめてファイル出力に限定されるんなら 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-04-10 スレッド表示 遠州律夫


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-04-10 スレッド表示 遠州律夫


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が動きません

2013-04-10 スレッド表示 jxc k
 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 にアクセスしてください。