У меня есть простое приложение для чата, использующее socket.io и Express Framework, ниже приведен фрагмент кода:
var app = express.createServer();
var socket = io.listen(app);
var store = new express.session.MemoryStore;
app.use(express.cookieParser());
app.use(express.session({
secret: 'something',
store: store,
cookie: {
maxAge: 60*60*24*30*1000
}
}));
app.get('/', function(req, res){
socket.on('connection', function(client) {
req.session.ioid = client.sessionId;
req.session.channel = req.param('channel');
req.session.username = req.param('username');
//I want the code below happen just once
res.header('Content-Type', 'text/plain');
res.header('Access-Control-Allow-Origin', '*');
res.send({sid:req.session.id});
});
});
Вы можете увидеть res.header и res.send в сокете socket.on,Эти «res» будут выполняться постоянно и приводят к ошибке «Невозможно установить заголовки после их отправки».
Я ищу способ сделать блок -
res.header('Content-Type', 'text/plain');
res.header('Access-Control-Allow-Origin', '*');
res.send({sid:req.session.id});
случается только один раз.