問題タブ [dnode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
219 参照

memory - dnodeメモリリーク?

dnodeのパフォーマンスをテストしたいので、クライアントからサーバーに文字列を送信し、サーバーが同じ文字列でクライアントにコールバックしようとします。サーバーのメモリ使用量は常に増加しており、691回の呼び出し後にサーバーがクラッシュしました。それは私のJavaScriptコードが間違っていましたか?この問題を解決するためのアイデアはありますか?どうもありがとう!

クライアント:

サーバ:

0 投票する
2 に答える
5665 参照

node.js - 別のネットワークでピアツーピア接続を作成することは可能ですか?

2つのnodejsクライアント間にピアツーピア接続を作成したいと思います。

websocket(dnode)を使用する

ここに制限があります:

  • nodejsクライアントは、異なるネットワークにある2台のPCで実行されます。
  • NATまたはファイアウォールの背後に静的IP(192.168.1.100 && 192.168.2.200)がありません
  • ルーターのマッピングを変更する権限がありません。
  • パブリックネットワークには静的Webサーバーしかありません。(人間がファイルを変更できます)
  • PCにアプリケーションをインストールできます(win)

出来ますか?ありがとう

0 投票する
2 に答える
1076 参照

node.js - node0.8.1およびwin7でnpm install dnodeが失敗する

Python 2.7.3 & 3.x を試してみましたが、どちらも失敗しました。

py2.7のerror2

0 投票する
1 に答える
1119 参照

windows-7-x64 - Install DNode on Windows

I am trying to install DNode on Windows 7 64bit, Microsoft Visual C++ 2010 Express and Python 2.7.3 are installed. I get the following output from npm:

Command Prompt runs as Administrator.

"The Platform for project 'weakref.vcxproj' is invalid."? is this a 32bit / 64bit issue?

It seems to be a problem with the C++ compilers. So I installed the full 64bit version of .NET

and am now trying to install the Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO) from DVD: x64 ISO File GRMSDKX_EN_DVD.iso from http://www.microsoft.com/en-us/download/details.aspx?id=8442

but the installation fails, with the following error: Please refer to Samples\Setup\HTML\ConfigDetails.htm document for further information.

Then I tried again after setting the Registry and verifying the TEM variable according to the suggestions here: http://ctrlf5.net/?p=184

Again, the SDK will not install

Any ideas what went wrong here and how to fix?

0 投票する
0 に答える
79 参照

ruby - dnode ruby​​ がハングする

dnode に問題があります。node.js サーバーを作成し、Ruby からいくつかのノード関数を呼び出したいと考えています。動作しますが、接続がハングします。そのため、問題をデバッグするために node.js 関数に console.log を配置しました。関数が 3 回呼び出されていることがわかります (3 回呼び出しています)が、その後 ruby​​ のコードがブロックされます。これを見てください:

ご覧のとおり、ベンチマークを作成しています。publish メソッドは 30000 回ではなく 3 回 (1 回の実行) だけ呼び出され、ベンチマークはちょうどハングします。別の言語の dnode を調べていましたが、この場合はremote.endを使用しています が、このメソッドはオブジェクトの一部ではありません。

ありがとうございました!

0 投票する
2 に答える
300 参照

node.js - dnode接続を暗号化する方法は?

Node.jsアプリケーション内でRPCスタイルのライブラリとしてdnodeを使用しています。

ここで、公開鍵暗号を使用して安全なdnodeの接続を確立したいと思います。Node.jsのTLSモジュールを使用すれば、これはとにかく可能になるはずですが、私はこれを使用したことがないため、経験が不足しています。

誰かがすでにこれを行っており、暗号化され保護されたdnode接続をセットアップする方法についての小さいが完全な例を提供できますか?

0 投票する
1 に答える
4344 参照

multithreading - node.js クラスターの子プロセス間通信オプション

私は現在、node.js ゲーム サーバー アプリケーションに取り組んでいますが、ここで少し壁にぶつかりました。私の問題は、ゲーム クライアントからの受信接続を受け入れるために socket.io を使用していることです。これらのクライアントは、ゲーム世界のいくつかのゾーンまたはエリアの 1 つに接続されている可能性があります。

基本的なアーキテクチャを以下に示します。マスター プロセスは、Zone Manager プロセスを実行するゲームのゾーンごとに子プロセスを fork します。ゾーン データ (3D モデル、プレイヤー/エンティティの位置など) を維持するための専用プロセス。次に、マスター プロセスは、作成するゾーン マネージャーごとに複数の「通信スレッド」をフォークします。これらのスレッドは、socket.io のインスタンスを作成し、そのゾーンのポートをリッスンします (1 つのポートでリッスンする複数のスレッド)。これらのスレッドは、独自のプロセスでゲーム ロジックの大部分を処理し、ゲーム サーバーを支えるデータベースと通信します。唯一の問題は、状況によっては、ゾーンやプレーヤーなどに関する情報を受け取るために、ゾーン マネージャーと通信する必要がある場合があることです。

建築

例として: プレイヤーは、ゾーン内のノンプレイヤー キャラクター (NPC) と売買/取引したいと考えています。ゾーン通信スレッドは、取引を行う前に、プレイヤーが取引を行うのに十分なほど NPC に近いかどうかをゾーン マネージャー スレッドに問い合わせる必要があります。

ここで私が直面している問題は、node.js クラスター機能を利用し、プロセスのsend()およびon()メソッドを使用してメッセージの受け渡しを処理することを計画していたことです。私が遭遇した1つの警告を除いて、それは問題ありません。すべての子プロセスがcluster.fork()「マスター」プロセスとのみ通信できます。node.js ルート プロセスは、すべての通信のボトルネックになります。クラスターのプロセス間通信 (IPC) を使用して文字通りメッセージを前後にバウンスし、実行されている 1 秒あたりのリレー数を追跡するスクリプトを使用して、システムでいくつかのベンチマークを実行しました。最終的に、ノードが中継できる IPC の数に関して、ノードは毎秒約 20k で上限に達するようです。この数値は、Phenom II 1.8 GHz クアッド コア ラップトップと FX-8350 4.0 GHz 8 コア デスクトップの両方で一貫していました。

これはかなり高いように聞こえますが、これは基本的に、ゾーンまたは通信スレッドの数に関係なく、すべての IPC が、アプリケーション全体の「リレー」として機能する単一のプロセスによって依然としてボトルネックになっていることを意味します。つまり、個々のスレッドは 1 秒あたり 20,000 を超える IPC を中継できるように見えますが、すべての通信が 1 つのスレッドを通過するため、アプリケーション全体が非常識な 32 コア システム上にあったとしても、それ以上中継することはありません。

それが私が抱えている問題です。今ジレンマ。私はそこにある他のさまざまなオプションについて多くのことを読んでおり、このトピックに関するスタックに関する 20 の異なる質問を読んでおり、いくつかのことが定期的にポップアップしているのを見てきました。

Redis : 現在、サーバーで Redis を実際に実行しており、それを socket.io データストアとして使用しているため、複数のスレッドの socket.io が接続データを共有できるため、ユーザーは N 個の socket.io のいずれかに接続できます。サーバーが着信接続を自動的に負荷分散できるように、ゾーンのスレッド。

これに関する私の懸念は、ネットワーク スタックを介して実行されることです。同じサーバー上の複数のプロセス間の通信には理想的ではありません。長期的にはレイテンシが大きな問題になると思います。

0MQ (zeromq/zmq) : これまで何にも使用したことがありませんでしたが、最近少し耳にするようになりました。私が行った読書に基づいて、TCPソケットでそれを使用している人々の多くの例を見つけましたが、IPCに使用している人についての話題はあまりありません. おそらく、ここの誰かが以前に IPC の 0MQ で作業したことがあり (おそらく node.js でも?)、このオプションに光を当ててくれることを期待していました。

dnode : 繰り返しますが、私はこれを使用したことはありませんが、私が見たところ、ネットワークスタックが再び邪魔になることを意味する TCP で動作するように設計された別のオプションのようです。

node-udpcomm : 誰かがここの別の質問でこれをリンクしました (残念ながらもう一度見つけることができないようです)。聞いたこともありませんが、UDP 接続を開いてリッスンする非常に小さなソリューションのように見えます。これはおそらく TCP オプションよりも高速ですが、まだネットワーク スタックが適切に処理されているのでしょうか? 私は間違いなく、ここにある「プログラマー ゾーン」から 1 マイルほど離れており、ネットワークやコンピューター アーキテクチャーの領域に入り込んでいて、あまり詳しくありません (笑)

とにかく、肝心なのは、私はここで完全に立ち往生しており、このシナリオでの IPC の最適なオプションが何であるかわからないということです。現時点では、0MQ が上にリストしたものの中で最良のオプションであると想定しています。通信プロトコルの「IPC」オプションを提供しているように見えるのは 0MQ だけだからです。ネットワーク スタックを通過していませんが、確認できません。

ここにいる何人かの人々が、私を正しい方向に向けるのに十分な知識を持っているか、私がすでにそこに向かっていると言ってくれることを望んでいる. 私が取り組んでいるプロジェクトは、Three.js を使用して 3D グラフィックス/計算を強化するマルチプレイヤー ゲーム クライアントで「箱から出して」動作するように設計されたマルチプレイヤー ゲーム サーバーです。クライアントとサーバーは、すべてが満足のいくように機能するようになったら、すべての人にオープンソースになります。アーキテクチャが可能な限りスケーラブルであることを確認して、人々がこれでゲームを構築してからスケールすることがないようにしたいと考えています。壁にぶち当たります。

とにかく、実際にこれをすべて読んでくれてありがとう:)

0 投票する
1 に答える
219 参照

node.js - node.js での WebSocket 通信の DNode 実装

DNodewebsocket通信を使用する方法がわかりません。socket.ioを使用していると言う人もいれば、 sockjsと言う人もいます。どちらですか?それとも選択可能ですか?

DNode を使用しようとしていますが、RPC 呼び出しに反応して (半) ブロードキャストするための接続にもアクセスする必要があります。どうすればいいですか?

どこかに dnode に関するより詳細なマニュアルはありますか?

0 投票する
1 に答える
827 参照

node.js - DNode/shoe を使用した Node.js リアルタイム関連のものと、ロード バランシングに関するすべて

クライアント側で dnode、shoe、browserify を使用し、サーバー側で NodeJS と dnode/shoe を使用する小さなシステムを構築しました。リアルタイム Web アプリケーションの唯一のプロトコルとして dnode (RPC) を使用するのが良い考えかどうか疑問に思っています。

DNode またはその他の RPC インターフェイスの利点を見てみましょう。関数をリモートで呼び出すことができるのが気に入っています (RPC)。クライアントからサーバーへ、およびサーバーからクライアントへの通信に一貫したインターフェイスが得られるため、Ajax よりも確実に優れています。また、Ajax には HTTP オーバーヘッドが伴うため、Ajax よりもわずかなパフォーマンスが得られると確信しています。

ただし、RPC を使用すると、負荷分散とサーバー上のクライアント接続に対処する必要があります。しかし、これはどの WebSocket 実装にも当てはまります。しかし、他の Websocket 実装では、クライアントがサーバーからのイベントをリッスンし、それらのイベントに応答する、より伝統的なイベント ベースのシステムがあります。EventEmitters を使用してこの種のインターフェイスを複製しようとしましたが、ひどいもので、ハンドラーが多すぎるという警告が表示され続けます。うーん!

アプリケーションの開発に使用できる、軽量でクリーンなインターフェイスを実現したいと考えています。堅牢で、多くのクライアントに拡張できるもの。しっかりした感じが必要です。

この投稿を書いている私の質問が何であるかはよくわかりません。私が作成したこのコードベースを更新して、接続が失われないようにし、全体的により堅牢にすることを任されています。私は自分のアプリケーションに関するアドバイスや相談を切望しているだけだと思います。このトピック (RPC とリアルタイム Web アプリケーション) について、私と直接話してくれる人はいますか?

読んでくれてありがとう。

0 投票する
2 に答える
260 参照

node.js - DNode サーバー メソッドのタイムアウト

RPC 機能が必要なプロジェクトでNodeJs DNode ( https://github.com/substack/dnode ) を使用しようとしています。セットアップとテストが行​​われており、プロジェクトに適しているようです。

しかし、1つの小さなニグル。リモート関数はユーザーが定義できるため、ロジックを制御することはできません。これは、関数が正しく記述されておらず、実行に時間がかかりすぎたり、完了しない (無限ループ) 可能性があることを意味します。

質問:生成されたサーバー接続/呼び出しにタイムアウトチェック/イベント/トリガーを実装する方法はありますか?
例: 関数の実行時間が 5 秒を超えた場合、関数を中止し、例外情報をクライアントに返します。

注: クライアントにはタイムアウト ロジックが実装されているため、これは問題ではありません。理由もなく偽のゾンビ プロセスがサーバー コンポーネントを詰まらせるのは望ましくありません。

編集: * -- コード例を追加 -- *
サーバー (ポート 8000 でリッスンし、callMe()関数はdoWork()を呼び出し、終了することはありません。)

クライアント(ポート 8000 と rpc callMe()に接続します。返されません)

クライアントが実行されるとハングしますが、強制終了されるか、接続を終了するタイムアウトが設定される可能性があります。そのため、クライアントは別のことを行うことができます。

しかし

サーバーは、終わりのないコードを楽しそうにパントし続けます...
そして、より多くのクライアントが接続して回避コードを呼び出すと、最終的にすべてのサーバーリソースが消費されると想像するまで、追加の偽のゾンビが発生します.