Socket.io断开连接

时间:2017-01-13 21:46:30

标签: node.js socket.io

我有一个基本上使用cookies进行会话处理的应用程序。

目的是在用户connectsdisconnects

时显示消息
io.on('connection', function(socket){
  // Logging when a new connection is, made!
    socket.emit('cookie_user_log');
    socket.on('cookie_value_log', function(x){
    console.log(x+ " Joined the conversation! :)");
    io.emit('welcome', x); // will display welcome HTML client-side message
  });

这非常有效,我可以在用户connects时查看消息。

但是,类似的方法似乎无法处理断开连接。

socket.on('disconnect', function(){
    leave();
  });

function leave()
 {
  console.log("LEAVE IT");
  socket.emit('cookie_user_leave');
  socket.on('cookie_value_leave', function(x){
  console.log(x+ " Left the conversation! :)");
  io.emit('bye', x); // will display bye HTML client-side message
  });
 }

此处的输出仅为:

LEAVE IT

并且不显示消息! 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

如果您想要做的只是在另一个客户端断开连接时输出到其他连接的客户端,那么您可以执行以下操作:

io.on('connection', function(socket){
  // Logging when a new connection is, made!
  var user
  socket.emit('cookie_user_log');
  socket.on('cookie_value_log', function(x){
    user = x
    console.log(x+ " Joined the conversation! :)");
    io.emit('welcome', x); // will display welcome HTML client-side message
  });

  socket.on('disconnect', function(){
    if (!user) return;
    console.log(user+ " Left the conversation! :)");
    io.emit('bye', user);
  });
})