1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

Merge pull request #675 from VILLASframework/fix-webrtc

Fix webrtc
This commit is contained in:
Steffen Vogel 2023-06-21 16:33:18 +02:00 committed by GitHub
commit d294e8fff3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 9 deletions

View file

@ -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.

View file

@ -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({}),
@ -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;

View file

@ -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<SignalingClient>(server, session, web);
client->onConnected([this](){ this->onSignalingConnected(); });

View file

@ -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);

View file

@ -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';