mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
[feat] add Login() private method which uses to check/request use_id when websocket opened
This commit is contained in:
@@ -103,18 +103,23 @@ int PeerConnection::Init(PeerConnectionParams params,
|
|||||||
|
|
||||||
on_ws_status_ = [this](WsStatus ws_status) {
|
on_ws_status_ = [this](WsStatus ws_status) {
|
||||||
if (WsStatus::WsOpening == ws_status) {
|
if (WsStatus::WsOpening == ws_status) {
|
||||||
|
ws_status_ = WsStatus::WsOpening;
|
||||||
signal_status_ = SignalStatus::SignalConnecting;
|
signal_status_ = SignalStatus::SignalConnecting;
|
||||||
on_signal_status_(SignalStatus::SignalConnecting, user_data_);
|
on_signal_status_(SignalStatus::SignalConnecting, user_data_);
|
||||||
} else if (WsStatus::WsOpened == ws_status) {
|
} else if (WsStatus::WsOpened == ws_status) {
|
||||||
signal_status_ = SignalStatus::SignalConnected;
|
ws_status_ = WsStatus::WsOpened;
|
||||||
on_signal_status_(SignalStatus::SignalConnected, user_data_);
|
LOG_INFO("Login to signal server");
|
||||||
|
Login();
|
||||||
} else if (WsStatus::WsFailed == ws_status) {
|
} else if (WsStatus::WsFailed == ws_status) {
|
||||||
|
ws_status_ = WsStatus::WsFailed;
|
||||||
signal_status_ = SignalStatus::SignalFailed;
|
signal_status_ = SignalStatus::SignalFailed;
|
||||||
on_signal_status_(SignalStatus::SignalFailed, user_data_);
|
on_signal_status_(SignalStatus::SignalFailed, user_data_);
|
||||||
} else if (WsStatus::WsClosed == ws_status) {
|
} else if (WsStatus::WsClosed == ws_status) {
|
||||||
|
ws_status_ = WsStatus::WsClosed;
|
||||||
signal_status_ = SignalStatus::SignalClosed;
|
signal_status_ = SignalStatus::SignalClosed;
|
||||||
on_signal_status_(SignalStatus::SignalClosed, user_data_);
|
on_signal_status_(SignalStatus::SignalClosed, user_data_);
|
||||||
} else if (WsStatus::WsReconnecting == ws_status) {
|
} else if (WsStatus::WsReconnecting == ws_status) {
|
||||||
|
ws_status_ = WsStatus::WsReconnecting;
|
||||||
signal_status_ = SignalStatus::SignalReconnecting;
|
signal_status_ = SignalStatus::SignalReconnecting;
|
||||||
on_signal_status_(SignalStatus::SignalReconnecting, user_data_);
|
on_signal_status_(SignalStatus::SignalReconnecting, user_data_);
|
||||||
}
|
}
|
||||||
@@ -303,6 +308,23 @@ int PeerConnection::CreateAudioCodec() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int PeerConnection::Login() {
|
||||||
|
if (WsStatus::WsOpened != ws_status_) {
|
||||||
|
LOG_ERROR("Websocket not opened");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
json message = {{"type", "login"}, {"user_id", user_id_}};
|
||||||
|
|
||||||
|
if (ws_transport_) {
|
||||||
|
ws_transport_->Send(message.dump());
|
||||||
|
LOG_INFO("[{}] send login request to signal server", user_id_);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int PeerConnection::Create(const std::string &transmission_id,
|
int PeerConnection::Create(const std::string &transmission_id,
|
||||||
const std::string &password) {
|
const std::string &password) {
|
||||||
if (SignalStatus::SignalConnected != GetSignalStatus()) {
|
if (SignalStatus::SignalConnected != GetSignalStatus()) {
|
||||||
@@ -376,18 +398,23 @@ void PeerConnection::ProcessSignal(const std::string &signal) {
|
|||||||
std::string type = j["type"];
|
std::string type = j["type"];
|
||||||
// LOG_INFO("signal type: {}", type);
|
// LOG_INFO("signal type: {}", type);
|
||||||
switch (HASH_STRING_PIECE(type.c_str())) {
|
switch (HASH_STRING_PIECE(type.c_str())) {
|
||||||
case "ws_connection_id"_H: {
|
case "login"_H: {
|
||||||
ws_connection_id_ = j["ws_connection_id"].get<unsigned int>();
|
if (j["status"].get<std::string>() == "success") {
|
||||||
LOG_INFO("Receive local peer websocket connection id [{}]",
|
user_id_ = j["user_id"].get<std::string>();
|
||||||
ws_connection_id_);
|
net_status_report_(atoi(user_id_.c_str()), TraversalMode::UnknownMode,
|
||||||
|
0, 0, user_data_);
|
||||||
|
LOG_INFO("Login success with id [{}]", user_id_);
|
||||||
|
signal_status_ = SignalStatus::SignalConnected;
|
||||||
|
on_signal_status_(SignalStatus::SignalConnected, user_data_);
|
||||||
|
} else if (j["status"].get<std::string>() == "fail") {
|
||||||
|
LOG_WARN("Login failed with id [{}]", transmission_id_);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "transmission_id"_H: {
|
case "transmission_id"_H: {
|
||||||
if (j["status"].get<std::string>() == "success") {
|
if (j["status"].get<std::string>() == "success") {
|
||||||
transmission_id_ = j["transmission_id"].get<std::string>();
|
transmission_id_ = j["transmission_id"].get<std::string>();
|
||||||
user_id_ = transmission_id_;
|
user_id_ = transmission_id_;
|
||||||
net_status_report_(atoi(transmission_id_.c_str()),
|
|
||||||
TraversalMode::UnknownMode, 0, 0, user_data_);
|
|
||||||
LOG_INFO("Create transmission success with id [{}]", transmission_id_);
|
LOG_INFO("Create transmission success with id [{}]", transmission_id_);
|
||||||
} else if (j["status"].get<std::string>() == "fail") {
|
} else if (j["status"].get<std::string>() == "fail") {
|
||||||
LOG_WARN("Create transmission failed with id [{}], due to [{}]",
|
LOG_WARN("Create transmission failed with id [{}], due to [{}]",
|
||||||
@@ -534,6 +561,8 @@ void PeerConnection::ProcessSignal(const std::string &signal) {
|
|||||||
on_connection_status_(ConnectionStatus::Connecting, user_data_);
|
on_connection_status_(ConnectionStatus::Connecting, user_data_);
|
||||||
std::string transmission_id = j["transmission_id"].get<std::string>();
|
std::string transmission_id = j["transmission_id"].get<std::string>();
|
||||||
std::string remote_user_id = j["remote_user_id"].get<std::string>();
|
std::string remote_user_id = j["remote_user_id"].get<std::string>();
|
||||||
|
LOG_INFO("[{}] receive answer from [{}]", user_id_, remote_user_id);
|
||||||
|
|
||||||
if (j.contains("sdp")) {
|
if (j.contains("sdp")) {
|
||||||
std::string remote_sdp = j["sdp"].get<std::string>();
|
std::string remote_sdp = j["sdp"].get<std::string>();
|
||||||
if (ice_transmission_list_.find(remote_user_id) !=
|
if (ice_transmission_list_.find(remote_user_id) !=
|
||||||
|
|||||||
@@ -72,6 +72,8 @@ class PeerConnection {
|
|||||||
int SendUserData(const char *data, size_t size);
|
int SendUserData(const char *data, size_t size);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int Login();
|
||||||
|
|
||||||
int CreateVideoCodec(bool hardware_acceleration);
|
int CreateVideoCodec(bool hardware_acceleration);
|
||||||
int CreateAudioCodec();
|
int CreateAudioCodec();
|
||||||
|
|
||||||
@@ -97,7 +99,7 @@ class PeerConnection {
|
|||||||
int turn_server_port_ = 0;
|
int turn_server_port_ = 0;
|
||||||
bool hardware_acceleration_ = false;
|
bool hardware_acceleration_ = false;
|
||||||
bool av1_encoding_ = false;
|
bool av1_encoding_ = false;
|
||||||
bool trickle_ice_ = true;
|
bool trickle_ice_ = false;
|
||||||
TraversalMode mode_ = TraversalMode::P2P;
|
TraversalMode mode_ = TraversalMode::P2P;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -108,6 +110,7 @@ class PeerConnection {
|
|||||||
std::string user_id_ = "";
|
std::string user_id_ = "";
|
||||||
std::string transmission_id_ = "";
|
std::string transmission_id_ = "";
|
||||||
std::vector<std::string> user_id_list_;
|
std::vector<std::string> user_id_list_;
|
||||||
|
WsStatus ws_status_ = WsStatus::WsClosed;
|
||||||
SignalStatus signal_status_ = SignalStatus::SignalClosed;
|
SignalStatus signal_status_ = SignalStatus::SignalClosed;
|
||||||
std::mutex signal_status_mutex_;
|
std::mutex signal_status_mutex_;
|
||||||
std::atomic<bool> leave_{false};
|
std::atomic<bool> leave_{false};
|
||||||
|
|||||||
Reference in New Issue
Block a user