익스프레스 생성기를 사용하여 노드 앱을 만들었습니다. 나는 응용 프로그램에 socket.io를 통합했습니다. 익스프레스 생성기는 익스프레스 서버를 생성하는 고유의 방법을 가지고 있기 때문에 this procedure을 따라 Socket 연결을 리스닝 서버와 성공적으로 통합하고 res.io 인스턴스를 통해 응용 프로그램 전체에서 io를 사용할 수있게했습니다.Express-generator, Socket.io 여러 번 발행하는 이벤트
FILE : 빈/WWW
#!/usr/bin/env node
var app = require('../app').app;
var debug = require('debug')('www:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = require('../app').server;
/app.js
//Express handler
var app = express();
// Socket configuration
var server = require('http').Server(app);
var io = require('socket.io')(server);
app.use(function(req, res, next){
res.io = io;
next();
});
...
module.exports = {app: app, server: server};
하지만 아래와 같이 나 이벤트를 방출하고있어 때 문제가된다. 내 고객이 데이터를 여러 번 읽는 중입니다.
루트 /하는 index.js
var clients = 0;
var nsp = res.io.of('/default-namespace');
nsp.on('connection', function (socket) {
clients++;
console.log(clients + ' clients connected!');
socket.on('disconnect', (reason) => {
clients--;
console.log(clients + ' clients connected!');
});
nsp.emit("socketToMe", "New User connected. Current clients:"+ clients);
});
내 청취자가 다음 코드를 home.pug 난 내 주요 incoginito 같은 다른 인스턴스에 브라우저를 새로 고침 할 때마다
var socket = io('/default-namespace');
socket.on('socketToMe', function (data) {
$('#data-div').append($('<li>').text(data));
});
브라우저가 데이터에 대해 여러 이벤트를 표시하고 있습니다. 이와 같이
New User connected. Current clients:1
New User connected. Current clients:2
New User connected. Current clients:1
New User connected. Current clients:2
New User connected. Current clients:1
New User connected. Current clients:1
무엇이 잘못 되었나요? 아무도 이것에 나를 도울 수 있습니까?
가 완벽하게 작동 예를 IO 직접들을 수 있습니다. nsp.on을 추가하는 대신 ('연결' , 단순히 nsp.emit –