热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在套接字之间共享会话。(从所有活动选项卡中注销用户)-Sharesessionbetweensockets.(Logoutuserfromallactivetabs)

Iambuildingsimplestudyingchatapplicationusingnode.jsexpressframework.AndIhaveoneprobl

I am building simple studying chat application using node.js express framework. And I have one problem. If user have multiple tabs active, and he logs out on one tab. I want to close connection to other tabs and make redirect to login page. But I've met a problem. Even if user has logged out other sockets session is not changed(I am using passport.socketio package, so I have current user at socket.handshake.user). What I am doing wrong? Thanks in advance.

我正在使用node.js表达框架构建简单的学习聊天应用程序。我有一个问题。如果用户有多个选项卡处于活动状态,则他会在一个选项卡上注销。我想关闭与其他标签的连接,并重定向到登录页面。但我遇到了一个问题。即使用户已注销其他套接字会话未更改(我使用的是passport.socketio包,因此我在socket.handshake.user中有当前用户)。我做错了什么?提前致谢。

2 个解决方案

#1


4  

If you have n different tabs that is actually n number of different sockets. One way of achieving what you want is make all the sockets from a specific user join a single room.

如果您有n个不同的选项卡,实际上是n个不同的套接字。实现您想要的方法的一种方法是使来自特定用户的所有套接字加入单个房间。

io.on('connection', function (socket) {
    socket.join(socket.handshake.user.id);
    // rest of your code
}

And in the logout code emit an event "logout" to that specific room.

并且在注销代码中向该特定房间发出“注销”事件。

io.sockets.in(socket.handshake.user.id).emit('logout')

Now in the client side you can write a event listener on "logout" that redirects to your desired location.

现在,在客户端,您可以在“注销”上编写一个事件监听器,重定向到您想要的位置。

#2


0  

In your app you will have to look through all open sockets, find the matching user name and terminate them by hand.

在您的应用程序中,您必须查看所有打开的套接字,找到匹配的用户名并手动终止它们。


推荐阅读
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • 小白的Python 学习笔记(八)推导式详解
    大家好,今天我总结一下Python的推导式,首先让我们来看定义推导式(comprehensions)是Python的一种独有特性,是可以从一个数据序列构建另一个新的数据序列的结构体 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 前言:原本纠结于Web 模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中eval函数。虽然eval函 ... [详细]
author-avatar
菲呀菲呀飞呀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有