join method

방 접속

Implementation

Future<ChannelResultModel> join(UserModel user) async {
  this.user = user;
  _joined = Completer();

  _eventInit();

  _send({
    "type": "send",
    "address": "c2s.join",
    "headers": {},
    "body": {
      "roomId": roomId,
      "clientKey": user.clientKey,
      "nickName": user.nickName,
      "grade": user.grade,
      "userInfo": user.userInfo,
    },
    "replyAddress": "join_user_init"
  });

  // 방 조인 대기
  var history = await _joined.future;

  Timer.periodic(const Duration(seconds: 1), (timer) {
    try {
      if (_client.closeReason == null) {
        _send({"type": "ping"});
      } else {
        dispose();
        timer.cancel();
      }
    } catch (e) {
      timer.cancel();
    }
  });

  return history;
}