diff --git a/res/ari/ari_websockets.c b/res/ari/ari_websockets.c
index ced1e0d697dc781335f7a065d25cf198f22347ca..528e7f8b2e4cdf00b5aef868feaa8b9a67f953ae 100644
--- a/res/ari/ari_websockets.c
+++ b/res/ari/ari_websockets.c
@@ -174,7 +174,7 @@ int ast_ari_websocket_session_write(struct ast_ari_websocket_session *session,
 		return -1;
 	}
 
-	ast_debug(3, "Examining ARI event: \n%s\n", str);
+	ast_debug(3, "Examining ARI event (length %zu): \n%s\n", strlen(str), str);
 	if (ast_websocket_write_string(session->ws_session, str)) {
 		ast_log(LOG_NOTICE, "Problem occurred during websocket write, websocket closed\n");
 		return -1;
diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c
index 33905452fbada00dfd9984b35dd29adfcc5177e1..9e5c60d831f142abf85c5298bca5b41a6ec712c0 100644
--- a/res/res_http_websocket.c
+++ b/res/res_http_websocket.c
@@ -300,6 +300,24 @@ int AST_OPTIONAL_API_NAME(ast_websocket_close)(struct ast_websocket *session, ui
 	return res;
 }
 
+static const char *opcode_map[] = {
+	[AST_WEBSOCKET_OPCODE_CONTINUATION] = "continuation",
+	[AST_WEBSOCKET_OPCODE_TEXT] = "text",
+	[AST_WEBSOCKET_OPCODE_BINARY] = "binary",
+	[AST_WEBSOCKET_OPCODE_CLOSE] = "close",
+	[AST_WEBSOCKET_OPCODE_PING] = "ping",
+	[AST_WEBSOCKET_OPCODE_PONG] = "pong",
+};
+
+static const char *websocket_opcode2str(enum ast_websocket_opcode opcode)
+{
+	if (opcode < AST_WEBSOCKET_OPCODE_CONTINUATION ||
+			opcode > AST_WEBSOCKET_OPCODE_PONG) {
+		return "<unknown>";
+	} else {
+		return opcode_map[opcode];
+	}
+}
 
 /*! \brief Write function for websocket traffic */
 int AST_OPTIONAL_API_NAME(ast_websocket_write)(struct ast_websocket *session, enum ast_websocket_opcode opcode, char *payload, uint64_t actual_length)
@@ -308,6 +326,9 @@ int AST_OPTIONAL_API_NAME(ast_websocket_write)(struct ast_websocket *session, en
 	char *frame;
 	uint64_t length;
 
+	ast_debug(3, "Writing websocket %s frame, length %" PRIu64 "\n",
+			websocket_opcode2str(opcode), actual_length);
+
 	if (actual_length < 126) {
 		length = actual_length;
 	} else if (actual_length < (1 << 16)) {
@@ -1372,6 +1393,8 @@ int AST_OPTIONAL_API_NAME(ast_websocket_write_string)
 {
 	uint64_t len = strlen(buf);
 
+	ast_debug(3, "Writing websocket string of length %" PRIu64 "\n", len);
+
 	/* We do not pass strlen(buf) to ast_websocket_write() directly because the
 	 * size_t returned by strlen() may not require the same storage size
 	 * as the uint64_t that ast_websocket_write() uses. This normally