From 498b8aebdf6e4b304a9719e54bfc5da41acc9630 Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Wed, 21 Jun 2023 13:52:05 +0200 Subject: [PATCH 1/3] node-webrtc: Fix logging - Move send log before lws_write because it clobbers the buffer. - Add raw receive log. - Check json_dumpb return value. Signed-off-by: Philipp Jungkamp --- lib/nodes/webrtc.cpp | 2 +- lib/nodes/webrtc/signaling_client.cpp | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/nodes/webrtc.cpp b/lib/nodes/webrtc.cpp index b679291bb..c8a1d1e16 100644 --- a/lib/nodes/webrtc.cpp +++ b/lib/nodes/webrtc.cpp @@ -153,7 +153,7 @@ int WebRTCNode::prepare() if (ret < 0) // TODO log return; - this->logger->debug("onMessage(rtc::binary) callback finished pushing {} samples", ret); + this->logger->trace("onMessage(rtc::binary) callback finished pushing {} samples", ret); }); return 0; diff --git a/lib/nodes/webrtc/signaling_client.cpp b/lib/nodes/webrtc/signaling_client.cpp index 5a10ee092..b6a299fd7 100644 --- a/lib/nodes/webrtc/signaling_client.cpp +++ b/lib/nodes/webrtc/signaling_client.cpp @@ -120,6 +120,8 @@ int SignalingClient::protocolCallback(struct lws *wsi, enum lws_callback_reasons buffer.append((char *) in, len); if (lws_is_final_fragment(wsi)) { + logger->trace("Received signaling message: {:.{}}", buffer.data(), buffer.size()); + auto *json = buffer.decode(); if (json == nullptr) { logger->error("Failed to decode JSON"); @@ -194,15 +196,17 @@ int SignalingClient::writable() return 0; } - char buf[LWS_PRE + 1024]; - auto len = json_dumpb(jsonMsg, buf + LWS_PRE, 1024, JSON_INDENT(2)); + char buf[LWS_PRE + 4096]; + auto len = json_dumpb(jsonMsg, buf + LWS_PRE, 4096, JSON_INDENT(2)); + if (len > sizeof(buf) - LWS_PRE) + return -1; + + logger->trace("Sending signaling message: {:.{}}", buf + LWS_PRE, len); auto ret = lws_write(wsi, (unsigned char *) buf + LWS_PRE, len, LWS_WRITE_TEXT); if (ret < 0) return ret; - logger->debug("Signaling message sent: {:.{}}", buf + LWS_PRE, len); - // Reschedule callback if there are more messages to be send if (!outgoingMessages.empty()) lws_callback_on_writable(wsi); From 87488fc167dcd912312842890ef619c091265771 Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Wed, 21 Jun 2023 15:02:08 +0200 Subject: [PATCH 2/3] webrtc: Change wss:// to https:// Signed-off-by: Philipp Jungkamp --- etc/examples/nodes/webrtc.conf | 2 +- lib/nodes/webrtc.cpp | 2 +- web/webrtc.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/etc/examples/nodes/webrtc.conf b/etc/examples/nodes/webrtc.conf index 824e0a048..441ed41a0 100644 --- a/etc/examples/nodes/webrtc.conf +++ b/etc/examples/nodes/webrtc.conf @@ -8,7 +8,7 @@ nodes = { session = "my-session-name" # Address to the websocket signaling server - server = "wss://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" + server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" # Limit the number of times a channel will retransmit data if not successfully delivered. # This value may be clamped if it exceeds the maximum value supported. diff --git a/lib/nodes/webrtc.cpp b/lib/nodes/webrtc.cpp index c8a1d1e16..64510e4ac 100644 --- a/lib/nodes/webrtc.cpp +++ b/lib/nodes/webrtc.cpp @@ -25,7 +25,7 @@ static villas::node::Web *web; WebRTCNode::WebRTCNode(const std::string &name) : Node(name), - server("wss://villas.k8s.eonerc.rwth-aachen.de/ws/signaling"), + server("https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling"), wait_seconds(0), format(nullptr), queue({}), diff --git a/web/webrtc.html b/web/webrtc.html index beeb1c46d..9bb75254e 100644 --- a/web/webrtc.html +++ b/web/webrtc.html @@ -98,7 +98,7 @@ var dc = null; // RTCDataChannel for the local (sender) var sc = null; // Signaling Client - var server = 'wss://villas.k8s.eonerc.rwth-aachen.de/ws/signaling'; + var server = 'https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling'; var sessionName = 'my-session-name'; var iceUsername = 'villas'; var icePassword = 'villas'; From 7f514cb9350224092d781dfb495edfa1842d723d Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Wed, 21 Jun 2023 15:14:17 +0200 Subject: [PATCH 3/3] node-webrtc: initialize all members of PeerConnection Signed-off-by: Philipp Jungkamp --- lib/nodes/webrtc/peer_connection.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/nodes/webrtc/peer_connection.cpp b/lib/nodes/webrtc/peer_connection.cpp index 1c91ce955..cd9293ef7 100644 --- a/lib/nodes/webrtc/peer_connection.cpp +++ b/lib/nodes/webrtc/peer_connection.cpp @@ -41,9 +41,19 @@ namespace rtc { PeerConnection::PeerConnection(const std::string &server, const std::string &session, rtc::Configuration cfg, Web *w, rtc::DataChannelInit d) : web(w), + extraServers({}), dataChannelInit(d), defaultConfig(cfg), - logger(logging.get("webrtc:pc")) + conn(nullptr), + chan(nullptr), + logger(logging.get("webrtc:pc")), + stopStartup(false), + warnNotConnected(false), + standby(true), + first(false), + firstID(INT_MAX), + secondID(INT_MAX), + onMessageCallback(nullptr) { client = std::make_shared(server, session, web); client->onConnected([this](){ this->onSignalingConnected(); });