Почему соединение сразу же закрывается?
Имеется вот такой PHP код на стороне клиента ( непосредственно на странице c HTML кодом ), в котором происходит авторизация пользователя. Название страницы - index.php
$client = new Client(new Version2X('http://localhost:1337', [
'headers' => [
'authuser:'. $_SESSION['user_id']
]
]));
$client->initialize();
$client->emit('join', ['userID'=>$_SESSION['user_id']]);
И обработчик на стороне soket.io (Код JS). Проше обратить внимание на console.log.
io.use(function (socket, next) {
let user = socket.request.headers.authuser;
console.log('user 0001: '+user);
if(user) {
console.log('users 0002: '+users);
if (!users[socket.id]) {
console.log('socketID 00021:'+socket.id)
users[socket.id] = user;
console.log('users 0003: '+users);
console.log('connected 0004: '+io.sockets.connected);
}
return next();
}
else{
return next(new Error("no authorization header"));
}
});
io.on('connection', function (socket){
socket.on('join', function (data) {
socket.join(data.userID); // We are using room of socket io
console.log('join 0005: '+data.userID);
});
socket.on('disconnect', function () {
console.log('disconnect 0007: ');
});
});
server.listen(port);
Вот что выдает консоль после запуска страницы index.php
user 0001: 26657d5ff9020d2abefe558796b99584
users 0002: [object Object]
socketID 00021:Ajp8ebjeVdajd4A-AAAB
users 0003: [object Object]
connected 0004: [object Object]
join 0005: 26657d5ff9020d2abefe558796b99584
disconnect 0007:
Вопросы следующие: Почему сразу же вызывается функция disconnect, если я нигде не прописываю $client->close();?
Почему console.log: users 0003 выдает пустой массив, если значение socket.id известно и user также известен? Он ведь должен записать значение в массив вроде.