Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在会话过期时断开套接字连接_Javascript_Node.js_Session_Express_Socket.io - Fatal编程技术网

Javascript 如何在会话过期时断开套接字连接

Javascript 如何在会话过期时断开套接字连接,javascript,node.js,session,express,socket.io,Javascript,Node.js,Session,Express,Socket.io,我有一个小的express应用程序,其中还包含socket程序。当用户成功登录时,它会完美地创建会话和套接字连接 但我的问题是,当express会话过期或cookie manager删除会话时,套接字仍处于活动连接中。它正在接收信息。如何在成功登录后即使会话不可用也断开连接 我的代码是: 这是我的html文件,用于获取警报消息: <!DOCTYPE html> <html> <head> <script src="jquery.min.js">&l

我有一个小的express应用程序,其中还包含socket程序。当用户成功登录时,它会完美地创建会话和套接字连接

但我的问题是,当express会话过期或cookie manager删除会话时,套接字仍处于活动连接中。它正在接收信息。如何在成功登录后即使会话不可用也断开连接

我的代码是:

这是我的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>

谢谢。

在发出消息之前,您是否可以检查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();
});
要从服务器端断开插座,请检查此答案

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();
});