2011-11-14 8 views
1

function (name,data,callback)というカスタムを定義する方法はありますか?クライアントが関数呼び出しを送信したときにsocket.ioによって呼び出されますか?Socket.IO:socket.onを使用する代わりにカスタム関数を呼び出す

代わりにsocket.on(name,function(data,callback){...}) socket.ioを使用して、私の関数を呼び出す必要があります。これにより、すべてのsocket.io関数で必要とされるロジックを実装するのがはるかに簡単になり、各接続でrpc関数のスタック全体に対してsocket.onを呼び出す必要はありません。

socket.io wikiをチェックしましたが、関連するものが見つかりませんでした。

私はこれのようにsocket.ioの上に "rpc server"を実装することができますが、socket.ioのネイティブな方法を使う方が良いでしょう。

socket.on('rpc',function(data,callback){ /* e.g. data.name for function name, data.data for the actual data */}); 

答えて

3

私には分かりません。このようなことはできませんか?

サーバー:

function handleMessage(name, data, callback) { 
    // ... 
} 

// listen on all kind of messages 
socket.on('message', handleMessage); 

クライアント:あなただけのWebSocketのラッパーとしてSocket.IOを使用

socket.send(name, data, callback); 

この方法です。

さらに詳しい情報をお探しの場合は、nowjsまたはdnodeをご覧ください。

+0

'socket.send'は、データとコールバックの2つのパラメータのみをサポートします。しかし、コールバックは盗聴されています(バグ報告はこちら:https://github.com/LearnBoost/socket.io/issues/645)。私はあなたが今すぐ提案したように実際にやっています(バグ修正あり)。私は 'socket.json.send([name、data]、cb)'と一緒に送る。 (jsonのメッセージフラグ) – Eliasdx

+0

うーん、おそらく 'send'はコールバックを持っていないと思われますが、わかりません。とにかくバインディングがあるだけで、今後変更するのは簡単になるので、当面はいつでも 'emit'に戻すことができます。美学以外の 'emit'を使わない理由は何ですか? –

+0

???どのようにサーバー側*のhandleMessage()関数*がクライアント側で 'callback' *を呼び出すことができるのでしょうか? – cibercitizen1

関連する問題