2016-04-14 6 views
0

クライアントとサーバーにソケットを設定しましたが、クライアントにデータが届かないようです。彼らは適切に接続しているようだ、私はちょうどすべてのデータを取得することはできません。エラーメッセージもありません。ここでクライアントはSocket.ioでデータを取得しようとしていますが、接続していないと思われます

は私のサーバーのコードです:ここで

io.on('connection', function (socket) { 

    console.log('a user connected'); 

    socket.on('custom-message', function() { 
    console.log("Hitting messages socket"); 
    Message.find(function(err, messages){ 
     if(err){ 
     socket.emit('custom-message', err) 
     } else { 
     socket.emit('custom-message', messages); 
     } 
    }) 
    }); 

}); 

は、ソケットに接続するクライアントでの関数である。

loadMessagesFromServer: function(){ 
    console.log("About to load messages") 
    socket.on('custom-message', function(msg){ 
     console.log("connected in client", msg) 
    }); 
    }, 

私はそれはかなり単純な例で言ったように、私はちょうどすることができますloadMessagesFromServerのデータを取得しているようです。エラーはありません。私がデバッグしている唯一の方法は、別のものを試しています。

答えて

0

あなたはイベントmessages。したがって、socket.emit('messages: err', err)ではなく同じイベントを発行する必要があります。 socket.emit("messages", error)で試してください。さらに、サーバーサイドのコードでは、最初にmessageイベントを受信する必要があり、ソケットがメッセージを送信するだけです。 socket.on(custom-messages)を削除します。なぜあなたはそれが必要なのですか?

サーバーサイドコード

io.on('connection', function (socket) { 
/* Here a client connection is established. The on("connection") 
* event will be triggered as many times as`io.connect("the-uri")` 
* is triggered (and succeeded) in the client` 
*/ 

// Listening for the post event 
    socket.on("post", function(messages){ 
     console.log("client posted data:", messages)  

     // Find messages and emit result 
     Message.find(function(err, messages){ 
     if(err){ 
      socket.emit('error', err) 
     } else { 
      socket.emit("message", messages); 
     } 
     }); 

    }); 
}); 

クライアント側のコードまた

registerOnMessageFromServerListener: function(){ 
    socket.on("message", function(msg){ 
    console.log("received message:", msg); 
}); 

registerOnErrorFromServerListener: function(){ 
    socket.on("error", function(error){ 
    console.log("an error occured:", error); 
}); 

registerOnMessageFromServerListener(); 
registerOnErrorFromServerListener(); 
socket.emit("post", "a-message"); 

あなたは私が実装

+0

ソケット接続を確立する前に、あなたがloadMessagesFromServerを呼び出していることを確認してください変更。私は新しい変更を反映するために上記のコードを更新しました。最初にメッセージを受け取るにはどうしたらいいですか?私はデータベースにメッセージを持っているので、Message.find()が行ってメッセージを取得し、それを送信すると思ったのですか? – fresh5447

+0

これはうまくいきます。しかし、 'on connection'はメッセージを取得することしかサポートしていません。私はそれをセットアップしようとしていたので、そこに二番目の機能を持たせてメッセージを 'POST 'することができました。私はこれを上記のように動作させることはできませんか? – fresh5447

+0

基本的に私はあなたの方法は動作するが、上の方法は理解できません。 2番目の 'io.on(接続)'を開かずに 'POST'ソケットを作る方法は? – fresh5447

関連する問題