我有一个小型快递应用程序,它还包含套接字程序。当用户成功登录时,它会完美地创建会话和套接字连接。
但我的问题是当快递会话到期或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);
谢谢。
答案 0 :(得分:0)
也许你可以在发出消息之前检查req.session是否存在?
app.get('/alert',function(req,res){
if(req.session)
io.sockets.in('sairam').emit('message',{msg:'hai'});
else
//Disconnect the client from server side
res.end();
});
要从服务器端断开套接字,请检查此答案;