2017-09-19 12 views
0

ソケットを使用してページに接続を表示しようとしていますが、ページをリロードするとメッセージが2回表示され、再度ロードすると3回表示されます。Socket.ioは複数回接続します

ここにコードノードjsがあります。

.get('/compte/', function(req, res) { 
res.render('compte.ejs'); 
io.sockets.on('connection', function(socket){ 
    socket.on("new_client", function(message){ 
     console.log(message); 
    }); 
}); 

});

コードはhtml/scriptです。

<script src="/socket.io/socket.io.js"></script> 
    <script> 
     var socket = io.connect('http://localhost:8080'); 

     socket.emit('new_client', "hello"); 
    </script> 

ここでは2リロード後の表示です。

hello 

hello 
hello 

hello 
hello 
hello 

私の問題についてはっきりしていることを期待します。 ありがとうございます。

+0

。ルート外に移動してください。 –

+0

ありがとう、それは働いた! – enerv

答えて

0

実際には、クライアントは複数回接続しませんが、取得要求ごとにSocketIO接続のイベントリスナを/compte/に追加します。それらはio.socketsに蓄積されています。

要求ハンドラのうち、SocketIOイベントハンドラを移動してみてください:あなたがページをご覧毎回新しいリスナーを作成しているためだ

.get('/compte/', function(req, res) { 
    res.render('compte.ejs'); 
}); 

io.sockets.on('connection', function(socket){ 
    socket.on("new_client", function(message){ 
     console.log(message); 
    }); 
}); 
関連する問題