У меня есть небольшое экспресс-приложение, которое также содержит программу сокетов. Когда когда-либо пользовательский вход в систему успешно запускает сеансовое и сокетное соединение.Как отключить сокет при истечении сеанса
Но моя проблема заключалась в том, что экспресс-сессия истекает или сеанс удаляется менеджером cookie, а сокет все еще находится в активном соединении. он получает сообщения. как отключиться, даже если сеанс недоступен после успешного входа в систему.
Вот мой код был:
Это мой HTML-файл, который получает предупреждающее сообщение:
<!DOCTYPE html>
<html>
<head>
<script src="jquery.min.js"></script>
<script src="socket.io.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type: 'GET',
contentType: 'application/json',
url: './alert'
});
});
</script>
<script>
var socket = io.connect();
socket.on('message',function(data){
alert(data.msg);
});
</script>
</head>
<body>
<button>alert</button>
</bodY>
</html>
Это мой сокет и экспресс-код:
var express=require('express');
var app=express();
var session = require('express-session');
var server=require('http').createServer(app);
app.use(session({secret: 'abcd',resave:'false', saveUninitialized:'false',name:'usess',cookie: { maxAge: 10000 }));
var io=require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
socket.join('alerts');
socket.on('disconnect',function(data){
socket.leave('alerts');
console.log('leaved');
});
});
app.get('/login', function(req, res){
//here my authentication code//
req.session.login='logedin';
req.session.save();
res.sendfile('./template.html');
});
app.get('/', auth,function(req, res){
//index file contins the two text boxes for user name and pass//
res.sendfile('./index.html');
});
app.get('/alert',function(req,res){
io.sockets.in('alerts').emit('message',{msg:'hai'});
res.end();
});
server.listen(3000);
Спасибо.