2012-02-28 5 views
1

私はKinectJSを使用してKinect.Rectオブジェクトを作成しています。このオブジェクトをクライアントからサーバーに渡そうとしています。クライアント側では(単にコンソール内のオブジェクトの引数として出力を渡す前に、次のとおりです。関数からKinectJSオブジェクトをClientからNodeJSに渡すと、クラスが失われるのはなぜですか?

box_284 
Kinetic.Rect 
alpha: 1 
centerOffset: Object 
className: "Shape" 
drag: Object 
drawFunc: function(){ 
eventListeners: Object 
fill: "00D2FF" 
height: 25 
isListening: true 
name: undefined 
rotation: 0 
scale: Object 
stroke: "black" 
strokeWidth: 4 
visible: true 
width: 25 
x: 100 
y: 100 
__proto__: Object 

それが送る:

box 
Object 
alpha: 1 
centerOffset: Object 
className: "Shape" 
drag: Object 
eventListeners: Object 
fill: "00D2FF" 
height: 25 
isListening: true 
rotation: 0 
scale: Object 
stroke: "black" 
strokeWidth: 4 
visible: true 
width: 25 
x: 100 
y: 100 
__proto__: Object 

KinectJSライブラリがクライアントに提供され、これはあります「深いクローン」の問題とオブジェクトがどのように渡されるのかという問題はありますか?ライブラリをサーバーで利用できないという問題はありますか? ==========

更新

次のように私は、引数を送信しています:

socket.emit('add_box', eval("box_" + id)); 

オブジェクトのようなものである場合には:box_523

+0

どのように送信しますか? JSONシリアライゼーションにはクラス情報は含まれていません。 – Bergi

+0

私はその情報で私の質問を更新しました。おそらく私はこれを達成しようとしている別の方法はありますか? – Inc1982

答えて

1

まず第一に、私はあなたが配列を介してアクセス可能な、あなたのオブジェクトを持ってお勧めしますまたはeval("box_" + id)を使用する代わりに何らかの種類の辞書を使用してください。潜在的なセキュリティ上の懸念を除いて、配列にインデックスを付けると、evalよりもはるかに優れたパフォーマンスが得られます。

質問の中心になるには、socket.emitがデータをシリアル化して転送するという問題があります。 drawFuncはデータではなく関数であるため、転送されません。

これについて考えると、これはかなり簡単な動作です。ワイヤを介して関数を移動した場合、どのような動作が期待されますか?それはどこで実行されますか?あなたは実際のJavaScriptを転送し、それをサーバー上で評価しますか?

これらはすべてあなた自身の解決策に答える可能性がありますが、どこからでも入手できるものではありません。


これは、function calling with nowjsです。それはあなたの要求に合うかもしれません。しかし、再び、それはワイヤー間で任意のコードを転送しません:

注:コードは今まで、これは関数の本体は、実際に転送されていないことを意味し、 それが作成された側で実行されます クライアントからサーバーまたはサーバーからクライアントへ、むしろリモートファンクションコールがシンクされるときにshim が存在します。これは大いに安全です はセキュリティ上重要です。つまり、NowJSで を実行することはありません。

+0

ありがとうございましたRohan、eval( 'box_' + id)の目的を達成するために配列や辞書を使用する方法の簡単な例を教えてください。 – Inc1982

+0

私はKinectJSに精通していませんが、ここには一般原則があります。配列 'box = []'を初期化します。その後、ボックスを作成するたびに、 'boxes.push [myNewBox]'を実行します。例えば、 'box [123]'を使って任意のボックスにアクセスできるはずです。 –

関連する問題