2016-05-06 11 views
1

私は、パスポート、マングース、接続フラッシュなどのすべての特典を持つエクスプレスアプリを設定しています。ソケットの受信と受信にsocket.ioを使用しています。クライアントからソケットメッセージを送信できません

現在、私は皆にメッセージを発信しています(後でルームを設定します)。エンドユーザが任意のページにアクセスすると、現在接続されているすべてのユーザが「こんにちは!」というメッセージを受信し、接続したユーザが明らかにメッセージを送信します。これまでの予想...

などのすべての問題:クリックすると 私はその上にボタンがあるページを持っている...

<button id="register" type="button" class="btn btn-warning">Register</button>

、これは言って」というメッセージを発しなければなりません私は登録したい! (現在は誰にでも、それはまだ問題ではありません)。これに応答して、サーバーはこれを聞き、「うーん、それについて考えるよ!」というメッセージを返して応答する必要があります。

「登録」はサーバーでは決して聞かれないため、「登録応答」の返信を送信することはできません。

誰かが間違っているのを見ることはできますか?

私は類似しており、このSocketIO, can't send emit data from clientやカップルの他の人を見てきましたが、私はすでに、彼らが示唆されているものをやっている:/

NB:アプリがhttp://localhost:3000/上で実行されているとIOがhttp://localhost:8678/eventsを使用。あなたが任意のさらなる情報が必要な場合だけであなたのソケット

var app = require('express'); 
var http = require('http'); 
var server = http.createServer(app); 
var io = require('socket.io').listen(server); //pass a http.Server instance 
server.listen(8678); //listen on port 8678 

//////////////////////////////////////// 
// Register event listeners  
//////////////////////////////////////// 

var events = io.of('/events'); 

events.on('connection', function(socket){ // This is heard and callback fires 
    events.emit('connected', 'Hi everyone!'); // This gets sent fine 
}); 

events.on('registering', function(data){ 
    events.emit('registration-response', 'Hmmm, will think about it!'); 
}); 

答えて

4

(app.js)

var app = app || {}; 

app = (function($){ 

    $(function() { 

     ///////////////////////////////////////////////////// 
     // Connect to io and setup listeners 
     ///////////////////////////////////////////////////// 

     var socket = io.connect('http://localhost:8678/events'); 
     socket.on('connected', function (data) { 
      console.log(data); // Always see this in the console 
     }); 

     socket.on('registration-response', function (data) { 
      console.log(data); // NOT seen in console 
     }); 

     ///////////////////////////////////////////////////// 
     // Setup click events 
     ///////////////////////////////////////////////////// 

     $('#register').on('click', function(){ 
      console.log('click'); // Always see this, so no binding issue 
      socket.emit('registering', 'I want to register!'); 
     }); 
    }); 

})(jQuery); 

サーバサイドJS私は

クライアント側JS/jQueryのを知っていますサーバーはイベントを待機するように設定されていません。あなたはこの

events.on('connection', function(socket){ // This is heard and callback fires 
    events.emit('connected', 'Hi everyone!'); // This gets sent fine 
    socket.on('registering', function(data){ 
     events.emit('registration-response', 'Hmmm, will think about it!'); 
    }); 
}); 

ソケットのようにそれを行う必要があり

は、今では「登録」イベントを受信して​​、「/イベント」の名前空間への応答を送信するときに何をすべきかを知っています。

+0

素晴らしい!ちょうどそのような:-0 – ann0nC0d3r

+0

あなたは正常に私の狂気に私の4時間の降下を停止し、そのために、ありがとう – Gab

関連する問題