2012-03-06 8 views
0

問題はsocket.ioクライアント側です。ソケットIO publish-subscribeモデルトリッキー

まず、未接続のソケットを作成し、すべてのリスナーを割り当てた後にサーバーに接続する必要があります。一部の依存関係があるため、アプリケーションの1か所でリスナーを同期して設定することはできません。

node.jsでは正常な動作は正常です。 nodejsのソケットを見てください!私は自分の建築に何も間違いがないことを願っています。ソケットioがdocumentationを欠いており、私が欲しいものを行う方法を見つけることができません。

var socket = new io.Socket(); //creating empty socket.But this line does not work 

//..... socket variable can be passed somewhere ..... 
//..... to another place in app ..... 

socket.on('message', callback); 

//..... when everyone is ready and subscriben ..... 

socket.connect('some-url'); 
+0

'var socket = new io.Socket(); //これは動作しません。 ' – Dan

答えて

1

は、だから、何かが起こるときsocket.connect()を開始したいですか?このようなので、古典clickイベントリスナー:

socket.connect('some-url') 
document.getElementById('button').onclick = function() { 
    socket.on('message', function() { 
     // Your stuff 
    } 
} 
+0

小さなノート:この「準備完了」はクライアント側で発生します。解決策はさらに簡単になる可能性があります。 – Dan

+0

準備が整ったら、他のクライアントとやりとりする必要があります。残念ながら、それを行う唯一の方法は、他のすべてのクライアントに接続されているサーバーと話すことです。だから、サーバーはあなたが準備が整った時にあなたに伝えて、あなたにそのようなイベントを送ることができます。 –

+0

'socket'インスタンスを作成するコードを教えてください。全てが素晴らしいでしょう! – Dan

1

作成した場合、私は、正しく問題を理解していれば:

$('#button').click(function() { 
    socket.connect('some-url') 
}); 

次の操作を行い、イベントが発生した後にのみメッセージを聞きたい場合は直ちに接続することなくソケットを追加すると、それに追加したすべてのイベントリスナーは、一度接続すると無視されます。それはうんざりだ、私はまだソケットで遊んでいないので、それが真実かどうかを検証することはできないが、問題の解決策がある。

あなたがすべてのリスナーを追加するファサードを作成するサーバーへの接続、接続、リスナーの追加(これは同期して行う必要があります)、ファサードを介してソケットによって送出されたすべてのイベントをプロキシします。

+0

接続なしでソケットを作成することはできません。自分で試してみてください! – Dan

+0

うん、ファサードを作るのはいい考えです。最後のレスキューです – Dan

0

私はsocket.io documentatuion

で探していたものを発見した彼らは、私たちは、この設定を設定することで、ソケット建設の瞬間には、サーバーへの接続無効にすることができ、書き込み:

自動接続true

io.connect()を呼び出すと、Socket.IOは自動的にサーバーとの接続を確立します。

ここでオブジェクトを作成し、すぐに接続を作成しません。あなたは、私はまだ接続をオフにする方法がわからない方法create()

を呼び出して接続されていないソケットを作成した後

。したがって、更新を監視する

関連する問題