首页
  • 2024.1.1.0
  • 2024.1.1.1
  • 2024.1.2.0
  • 2024.1.3.0
  • Java
  • Linux
  • Deploy
  • Application
关于
友情链接
GitHub (opens new window)

Xiao ku

板砖师傅
首页
  • 2024.1.1.0
  • 2024.1.1.1
  • 2024.1.2.0
  • 2024.1.3.0
  • Java
  • Linux
  • Deploy
  • Application
关于
友情链接
GitHub (opens new window)
  • 版本日志
  • 贡献清单
  • 2024.1.3.0

  • 2024.1.2.0

    • Simple-Starter概述
    • 自动装配模块

      • simple-starter-web
      • simple-starter-redisson
      • simple-starter-s3
      • simple-starter-socketio
        • 简介
        • 引入依赖
        • 配置项
        • 功能项
          • 权限认证
          • 测试页面
          • 发送消息方法
          • 集群示例
          • 测试room及token
          • 测试多群聊Room
          • 测试带指定微服务连接的客户端
      • simple-starter-grpc
      • simple-starter-datasource
      • simple-starter-freemarker
      • simple-starter-cloud
      • simple-starter-encrypt
      • simple-starter-dict
      • simple-starter-email
      • simple-starter-gateway
      • simple-starter-package
    • 服务类模块

    • 工具类模块

  • 2024.1.1.1

  • 2024.1.1.0

  • OpenSource
  • 2024.1.2.0
  • 自动装配模块
xiaoku
2023-03-31
目录

simple-starter-socketio

# 简介

长链接通讯自动装配类,集群使用redis订阅及广播机制,若无redis配置则自动单机化

# 引入依赖

    <dependencies>
        <dependency>
            <groupId>cn.iosd</groupId>
            <artifactId>simple-starter-socketio</artifactId>
            <version>Version</version>
        </dependency>
    </dependencies>
1
2
3
4
5
6
7

# 配置项

simple:
  ## 若无redisson配置则自动单机化
  redisson:
    #分布式锁 缺省项为false
    enabled: true
    type: standalone
    address: 127.0.0.1
    password: password
    database: 0
  ## simple-starter-socketio
  socketio:
    #长链接通讯及集群 缺省项为false
    enabled: true
    port: 12010
    upgradeTimeout: 1000000
    pingTimeout: 6000000
    pingInterval: 25000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 功能项

# 权限认证

实现AuthorizationListener
示例

@Slf4j
@Configuration
public class SocketIOAuthorization implements AuthorizationListener {

    /**
     * 连接Url:http://localhost:12010?room=1003&token=1003
     *
     * @param data
     * @return
     */
    @Override
    public boolean isAuthorized(HandshakeData data) {
        String token = data.getSingleUrlParam("token");
        String room = data.getSingleUrlParam("room");
        log.info("socket认证参数: token={}, room={}", token, room);
        if (StringUtils.isEmpty(token) || StringUtils.isEmpty(room)) {
            log.error("socket认证失败, 参数不符合要求: token={}, room={}", token, room);
            return false;
        }
        return true;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 测试页面

源码路径:

src/main/resources/static/socketio.html
1

连接示例:

http://localhost:12010
1

带群聊Room

http://localhost:12010?room=101
1

带权限

http://localhost:12010?room=101&token=101
1

多群聊Room

http://localhost:12010?room=101,102&token=101,102
1

指定微服务

http://localhost:12010?applicationName=pure-demo-socket
1

# 发送消息方法

注入使用

    @Autowired
    private SocketIOServer socketIoServer;
1
2

广播所有连接客户端

SocketIOMessageServer.sendBroadcast
1

仅发送带群聊Room连接的客户端

SocketIOMessageServer.sendRoom
1

发送带指定微服务连接的客户端
(注:会往连接applicationName参数为空的客户端发送msg)
可自动获取微服务名称并发送消息

SocketIOMessageServer.sendService
1

# 集群示例

# 测试room及token

启动 工程1:simple-demo-socketio-one 和 工程2:simple-demo-socketio-two

页面1连接工程1的socketio :http://localhost:12010?room=1001&token=1001
页面2连接工程2的socketio :http://localhost:12020?room=1002

接口调用工程1 发送消息以下消息,则页面1接收到数据

http://localhost:11040/message/room?message=test001&eventName=123&room=1001
1

接口调用工程1 发送消息以下消息,则页面2接收到数据

http://localhost:11040/message/room?message=test001&eventName=123&room=1002
1

接口调用工程1 发送消息以下消息,则页面1 页面2接收到数据

http://localhost:11040/message/broadcast?message=123
1

# 测试多群聊Room

启动 工程1:simple-demo-socketio-one 和 工程2:simple-demo-socketio-two

页面1连接工程1的socketio :http://localhost:12010?room=1001&token=1001
页面2连接工程2的socketio :http://localhost:12020?room=1002,1003

接口调用工程1 发送消息以下消息,则页面1接收到数据

http://localhost:11040/message/room?message=test001&eventName=123&room=1001
1

接口调用工程1 发送消息以下消息,则页面2接收到数据

http://localhost:11040/message/room?message=test001&eventName=123&room=1002
1

接口调用工程1 发送消息以下消息,则页面2接收到数据

http://localhost:11040/message/room?message=test001&eventName=123&room=1003
1

接口调用工程1 发送消息以下消息,则页面1 页面2接收到数据

http://localhost:11040/message/broadcast?message=123
1

# 测试带指定微服务连接的客户端

启动 工程1:simple-demo-socketio-one 和 工程2:simple-demo-socketio-two

页面1连接工程1的socketio :http://localhost:12010?room=1001&token=1001&applicationName=simple-demo-socketio-two
页面2连接工程2的socketio :http://localhost:12020?applicationName=simple-demo-socketio-one

接口调用工程1 发送消息以下消息,则页面2接收到数据

http://localhost:11040/message/service?message=23
1

接口调用工程2 发送消息以下消息,则页面1接收到数据

http://localhost:11050/message/service?message=2131
1
上次更新: 2024/03/25, 02:28:08
simple-starter-s3
simple-starter-grpc

← simple-starter-s3 simple-starter-grpc→

Copyright © 2019-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式