ฉันมีแอปพลิเคชัน nodeJS โดยใช้ express และ socket.io ฉันต้องการแยกโค้ดบางส่วนเพื่อให้ทำงานได้ในหน้าเดียวที่ฉันให้บริการเท่านั้น เมื่อต้องการทำสิ่งนี้ ฉันได้ใช้ express เพื่อฟังคำขอและป้อนหน้า html เป็นการตอบกลับ
app.get('/archive', function(request, response) {
response.sendfile(__dirname + "/views/table.html");
}
ฉันยังมีฟังก์ชัน socket.io ที่รับฟังและส่งข้อมูลไปยังหน้า html
io.sockets.on('connection', function(socket) {
channel.subscribe('cheat', function(message) {
socket.emit('message', message);
});\
ทุกอย่างทำงานได้ดีเมื่อโค้ดเป็นเช่นนี้ แต่ทันทีที่ฉันลองใส่ฟังก์ชัน socket.on ลงในฟังก์ชัน app.get ฉันมีปัญหา คำขอแรกทำงานได้อย่างสมบูรณ์ แต่เมื่อรีเฟรชเพจ ข้อมูลทั้งหมดก็จะถูกทำซ้ำ ครั้งแรกมันคือ 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);
});
}