2016-10-30 4 views
0

私はそれが必要になるまでサーバーsocket.emitからフェッチしたくありません。それまではすべてが完全に準備されていないからです。準備が整うまで、socket.emitを静かに座らせるにはどうすればいいですか?私はsocket.emitを使用する準備が整うまで実行したくない

サーバー

io.sockets.on('connection', function (socket) { 
    socket.on('adduser', function(player){ 
    ........ 
    } 

    socket.emit('getQ', socket.Ques[0].question); 

    ] 

クライアント

var retrieveQ = function(){ 
    socket.on('getQ', function(quesPick){ 
     quesObj = quesPick; 
    }) 

クライアントは、ずっと後にその開始時に行われると仮定しないでretrieveQで、まだソケットは、ほとんどすぐに発光してくれソケットエラーが原因を与えています。後日までQuesは行われません。

答えて

0

クライアントソケットが接続された後、クライアント要求に応答して簡単にgetQを発行します。このような何か:

io.sockets.on('connection', function (socket) { 
    socket.on('adduser', function(player){ 
    ........ 
    } 
socket.on('askGetQ', function(zzz){ 
     socket.emit('getQ', socket.Ques[0].question); 
    }  
} 

クライアント上で実行します。

io.on('connection', function(socket){ 
    socket.emit('getQ', 'something'); 
}); 
+0

まあそれはその時点で –

+0

@BkRazorが編集それも準備ができていないだろうことだが、それが今明らかだ願っています。 –

+0

それは私がそれを必要とするときに私のクライアントから出さなければならないということですか? –

0

のNode.jsはイベント駆動型環境です。だから、いつかはいつかあなたのサーバーに何らかのイベントがあり、あなたにこのイベントを送信したいのです。.emit()その時点で、適切なsocketオブジェクトを見つけて、それを使用して.emit()を送信する必要があります。

あなたはこのイベントを送信するために使用したいイベントを正確に述べていないので、私たちは本当により具体的に手助けできません。あなたがそれを説明してくれれば、おそらく特定のコードを提供することができます。あなたがすべきクライアント上

0


const chat = io.connect('http://localhost/chat') 
    chat.on('connect', function() { 
    chat.emit('getQ', socket.Ques[0].question); 
    }); 
関連する問題