Express と socket.io を使用する nodeJS アプリケーションがあります。私が提供する 1 つのページでのみ実行されるように、いくつかのコードを分離したいと考えています。これを行うために、エクスプレスを使用してリクエストをリッスンし、html ページをレスポンスとしてフィードしました。
app.get('/archive', function(request, response) {
response.sendfile(__dirname + "/views/table.html");
}
データをリッスンしてhtmlページに送信するsocket.io関数もあります。
io.sockets.on('connection', function(socket) {
channel.subscribe('cheat', function(message) {
socket.emit('message', message);
});\
コードがこのような場合、すべてがうまく動作しますが、 app.get 関数内に socket.on 関数を入れようとするとすぐに問題が発生します。最初のリクエストは完全に機能しますが、ページが更新されるとすべてのデータが複製されます。最初は x2、次に x3、次に x4 などです。なぜこれが起こっているのか誰にも分かりますか?
これは私の最終的なコードがどのように見えるかです:
app.get('/archive', function(request, response) {
response.sendfile(__dirname + "/views/table.html");
io.sockets.on('connection', function(socket) {
channel.subscribe('cheat', function(message) {
socket.emit('message', message);
});
}