Skip to content
hocgin edited this page Jan 8, 2022 · 11 revisions

ws-spring-boot-starter

  • 广播: /topic/* or /queue/*
  • 点对点: /user/*.
export default () => {
  let ref = useRef();
  let sendMessage = () => {
    // @ts-ignore
    ref?.sendMessage('/app/index', `Hello, ${new Date()}`);
  };
  let sendAllMessage = () => {
    // @ts-ignore
    ref?.sendMessage('/app/all', `Hello, ${new Date()}`);
  };


  return (<Page>
    <SockJsClient url={'http://127.0.0.1:8080/ws?ticket=1111'}
                  topics={['/queue/all', '/user/queue/errors']}
                  debug={true}
                  onConnectFailure={console.error}
                  onMessage={console.log}
                  ref={(c: any) => ref = c} />
    <Button onClick={sendMessage}>发送</Button>
    <Button onClick={sendAllMessage}>发送 ALL</Button>
  </Page>);
};

  server          server         server
    |               |              |
   (3)             (3)            (3)
    v               v              v
 secondary <-(1)-> main <-(1)-> secondary
    |               |              | 
   (2)             (2)            (2)
    v               v              v
  driver          driver         driver

 - driver: 是用户端设备
 - server: 是 web 端。
 - node-driver   路由表: 维护 node 上的 driver 列表。默认由 cache 实现维护。
 - global-driver 路由表: 维护 driver 对应所在 node 的映射。考虑由 redis 或 cache 来实现,设备上/下线 node 之间互相同步维护。
 - node-node     拓扑结构: node 之间互相注册。
 - node   池: node 维护,各个 node 注册列表。
 - driver 池: node 节点维护 driver 注册列表。
 - main 选举: 当 main 不存在,
(1) node 数据上报
     增量上报: node 主动上报,driver 上/下线时上报到 main。
     全量上报: main 发起上报命令,node 上报全部 driver。
     main 查询: main 向 node 发起查询命令,node 上报指定 driver。
     node 查询: node 向 main 发起查询命令,node 上报指定 driver。
(1) node-node udp 互联
     心跳: 当前 node 向 node 列表发起心跳检查,node 返回 ack。ack 延迟按照 12 level 进行降级。
     选举: 
(2) ws协议: node 与 driver 使用 ws 协议连接。 
     - ⬇️ 指令 ⬆️ ack
      - ⬇️ 切换 node ⬆️ ack
     - ⬆️ 心跳 ⬆️ ack
     - ⬆️ 登陆 ⬇️ ack
(3) ws协议: node 与 server 使用 ws 协议连接。 

存疑部分?

  • node-node 结构: 采用星型或者拓扑。 拓扑 + 星型
  • 选举算法: main 选举算法
Clone this wiki locally