2017-09-24 17 views
0

なぜnode.jsサーバがうまく接続し、ブラウザからemit()を受信するのか分かりませんが、 node.jsからemit()を呼び出してブラウザに到達しないようにしてください。私はここに何かを逃していますかNode.jsアプリケーションはブラウザからの発光を受信しますが、ブラウザは発光しません

コンソールログに「Test Recieved」と表示されますが、「Test Sent to Browser」は表示されません。

(index.phpを)はスニペット:

<script language="javascript" type="text/javascript">  
     var socket = io.connect('https://www.example.com:2053', {secure: true}); 
     socket.on('connect', function() { 
      socket.emit('join', '19AFA53df7715sfs484'); 
     }); 


     socket.on('testsend', function() { 
      console.log('Test Sent To Browser'); 
     }); 

     $(document).ready(function() { 
      $(this).on('click', '.mainlogo', function (e) { 
       e.preventDefault(); 
       socket.emit('testrecieve'); 
      }); 
     }); 

</script> 

ソケットコード(pipe.jsを):

答えて

1

問題は、socket.broadcast.emitが、新しく作成された接続を除くすべての他のクライアントにメッセージを送信するという問題です。これはあなたが望むものではありません。代わりにsocket.emitを使用する必要があります。

+0

ああ、あなたは正しい、それは動作します。しかし、実際にチャンネルにブロードキャストする必要があります。たとえば、これはうまくいきません: 'socket.broadcast.to( 'messages')。emit( 'testsend');' –

+1

あなたが '' io.to( 'messages')を使う必要があります。emit( 'testsend'); ' –

+0

@KevinJ私はsocket.ioなどのチャンネルに精通していません。 dはいくつかの文書を調べるようアドバイスします。 –

1
var fs = require('fs'); 

var options = { 
    ca: fs.readFileSync(__dirname + '/ca.pem'), 
    key: fs.readFileSync(__dirname + '/file.pem'), 
    cert: fs.readFileSync(__dirname + '/file.crt') 
}; 

var express = require('express'), 
app = express(); 

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

var https = require('https'), 
server = https.createServer(options, app), 
io = require('socket.io')(server, { origins: '*:*'}); 

server.listen(2053); 

// routing 
app.get('/', function (req, res) { 
    res.sendfile('/index.php'); 
}); 

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

    socket.on('join', function(uauth){ 
     socket.join('messages'); 
     socket.join(''+uauth+''); 
    }); 

    socket.on('testrecieve', function() { 
     socket.broadcast.emit('testsend'); 
     console.log('Test Recieved'); 
    }); 

}); 

エラーがあり、それはsocket.emit、ないsocket.broadcast.emitあります

socket.on('testrecieve', function() { 
    socket.emit('testsend'); 
    console.log('Test Recieved'); 
}); 

socket.broadcast.emitは新しい接続を除くすべての人に送信します。

+0

あなたは正しいですが、@ giorgi-moniavaは1分であなたを倒します。 –

+0

正しい答えが得られる限り問題はありません:) –

+0

@KevinJ公正であるためには、フランソワが最初に答えたと思います。私の答えにはなぜbroadcast.emitの使用法が間違っているのかという情報が含まれていた。とにかく。 –

関連する問題