在日常业务中,我们常需要统计当前在线人数,也就是连接了 websocket 的用户量有多少,通过阅读源码发现,在 org.tio.core 包下面的 TioConfig 文件中可以找到统计人数的对象

1、源码解读

在这里插入图片描述
我们可以看出 org.tio.core.TioConfig 文件中记录了大量的数据,例如:系统的启动时间,本jvm中所有的TioConfig对象,心跳超时时间等数据,再往下找,可以看到有一个 users 对象,这里面记录了连接 websocket 的所有对象,Users 这个类中存在的 mapWithLock 常量,就是用来记录用户的连接信息的,并提供了 getMap() 方法,这样我们就可以轻松获得系统中的实时在线人数了

2、获取实时在线人数

  • 1、首先获取配置文件
// 获取配置文件
ServerTioConfig serverTioConfig = WebSocketConfig.serverTioConfig;

前面已经介绍过了如何全局获取 t-io 的配置文件了,直接获取即可

  • 2、获取启动时间
// 系统启动时间
long startTime  = serverTioConfig.startTime;
  • 3、获取实时在线人数
// 实时在线人数
int users = serverTioConfig.users.getMap().size();
  • 4、获取group组的数量
// 实时组的数量
int groups = serverTioConfig.groups.getGroupmap().size();

需要获取其他统计数据的,可以阅读源码获取

如您在阅读中发现不足,欢迎留言!!!

        在日常业务中,我们常需要统计当前在线人数,也就是连接了 websocket 的用户量有多少,通过阅读源码发现,在 org.tio.core 包下面的 TioConfig 文件中可以找到统计人数的对象1、源码解读我们可以看出 org.tio.core.TioConfig 文件中记录了大量的数据,例如:系统的启动时间,本jvm中所有的TioConfig对象,心跳超时时间等数据,再往下找,可以看到有一个 user
上一篇文章中,咱们已经成功搭建了咱们的 websocket 服务器,并能够与服务器之间成功通信,本篇文章将带领大家实现用户用户之间的收发消息 1、原理解析 tio-websocket-server 中对用户发送消息的方法如下: Tio.sendToUser(channelContext.tioConfig, userId, wsResponse); channelContext.tioConfig,指整个 websocket 的配置信息,可以通过 ChannelContext.tioConfig 获取
//本地服务 http协议 使用 ws var socket = new WebSocket("wss://xxxxxxxxxxxxxxxxx"); // 服务器长链接路径 // 建立 web socket 连接成功触发事件 socket.onopen =function (e) { console.log("连接成功opened", e); // 接收服务端数据时触发事件 var that =this socket.onme.
本篇文章带领大家如何在 SpringBoot 中整合 tio-websocket-server 搭建一个自己的 websocket 服务器 1、引入 maven 依赖 <!-- tio-websocket --> <dependency> <groupId>org.t-io</groupId> <artifactId>tio-websocket-server</artifactId> <version&gt
文章目录前言一、建项目1. 在父项目ams-cloud下建立maven子项目ams-websocket2.pom文件添加常用依赖,另外添加redis依赖等,我这里直接引用common模块3.添加bootstrap.yml文件4.创建application二、添加config类、拦截器类、处理器类等1.添加config类2.添加拦截器类3.添加处理器类三、添加controller1.controller如下:2.运行结果总结 ByteBuffer是nio/aio编程所必须掌握的一个数据结构,也是掌握tio所必须要学会的基础知识。 设想你不懂Map,不懂List,不懂Set,那么你在编程领域将会一事无成,同样的道理,如果你不懂ByteBuffer,你无法在nio/aio编程领域立足 我们可以把bytebuffer理解成如下几个属性组成的一个数据结构 byte[] byte
**`package gds.application.gds.webSorce; import gds.application.gds.httpclient.RemoteAccess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.ObjectUtils; import javax.websocket.*; import javax.websocket.serv
tcgetattr(STDIN_FILENO, &old_tio); new_tio = old_tio; new_tio.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &new_tio); while (1) { c = getchar(); printf("你按了:0x%02X\n", c); tcsetattr(STDIN_FILENO, TCSANOW, &old_tio); return 0; 这段代码使用了 `termios.h` 库来处理终端输入。首先,它将读取当前终端设置,然后将终端设置为不回显,即程序不会在屏幕上显示按键内容。最后,通过 `getchar` 函数读取按键并输出按键的 ASCII 码。 编译运行此代码: gcc -o keydetect keydetect.c ./keydetect 这样,你就可以在终端中检测按键了。