ejabberd 是对xmpp协议的完全实现,那么单纯的ejabberd是不提供该功能限制的,但是从我们的xmpp协议则可以完全的解决这个问题,我们通过jid对它进行限制,下面可以看一下jid的解释:

完整JID

完整的Jid包括 Username@Domain/resource

Node/Username

用户名/节点 用户的基本标识

Domain

登陆的XMPP服务器域名

Resource

重点就是这里!
资源/来源,用于区别客户端来源,xmpp协议设计为可多客户端同时登陆,resource就是用于区分同一用户不同端登陆

除去resource部分,包含Username@Domain

当我们调用Client端的登陆jid的格式是 比如 wanglei@localhost/wanglei_macbook

另外如果我在windows下用我同样的账号jid是这样
wanglei@localhost/wanglei_windows

如果我们从ejabberd端将resource修改成一致的或者从client端调用登陆的时候统一resource 则macbook登陆后windows再登陆就会把macbook的登陆用户顶下来掉线,达到我们的功能实现。

即当Username 和 resource 相同的时候,第二次登录的设备会把第一次登录的设备挤掉。

还有一个关键点:

在ejabberd.yml 配置文件中,max_user_sessions  10

含有 max_user_sessions 这个参数,其含义为:允许单个用户的同步会话的最大数目. ejabberd默认设置的是10 。

有相关的max_user_sessions设置每个用户最多登录的session数目,建议设置小于等于2,防止重复登录。

 

最新文章

  1. python第15天
  2. [SHTSC 2007] 善意的投票
  3. 神奇的expect
  4. [深入浅出WP8.1(Runtime)]应用实例——移动截图
  5. ELK——Logstash 2.2 mutate 插件【翻译+实践】
  6. C# 类型运算符重载在类继承中的调用测试
  7. ASP.NET WEB API的服务托管(Self-HOST)
  8. Git ~ 管理修改 ~ Gitasd
  9. ASP.NET 导出Excel文档
  10. .NET MD5加密解密代码
  11. JavaScript系列-----Object之toString()和valueOf()方法 (2)
  12. 2017-07-07(zip unzip gzip gunzip)
  13. JMeter之断言 - 响应文本
  14. Unix 让进程安全地退出
  15. Pandas 错误笔记(持续更新)
  16. Qt快速入门第三版下载
  17. 8.Git分支-分支的创建与合并-01
  18. java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全
  19. Java 执行远程主机shell命令代码
  20. Rainbond v5.1.2发布,微服务架构应用便捷管理和交付

热门文章

  1. 基于websocket的页面聊天程序
  2. gpio 預設值
  3. 设置jenkins的邮件通知功能
  4. DB2时间函数 实现 时间加减
  5. Codeforces Gym100971 G.Repair-思维题(切矩形板子) (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
  6. python对象的复制问题
  7. Codeforces 743D Chloe and pleasant prizes(树型DP)
  8. Unix进程和线程管理及其异同
  9. ActiveMQ 使用spring模板 发布消息过程分析
  10. Git 详细的操作指南笔记