Browse Source

Push WebSocket header and frame at once for performance

Paul-Louis Ageneau 3 years ago
parent
commit
5f8fe8c886
1 changed files with 7 additions and 2 deletions
  1. 7 2
      src/impl/wstransport.cpp

+ 7 - 2
src/impl/wstransport.cpp

@@ -369,8 +369,13 @@ bool WsTransport::sendFrame(const Frame &frame) {
 			frame.payload[i] ^= maskingKey[i % 4];
 	}
 
-	outgoing(make_message(buffer, cur));                                        // header
-	return outgoing(make_message(frame.payload, frame.payload + frame.length)); // payload
+	const size_t length = cur - buffer; // header length
+	auto message = make_message(length + frame.length);
+	std::copy(buffer, buffer + length, message->begin()); // header
+	std::copy(frame.payload, frame.payload + frame.length,
+	          message->begin() + length); // payload
+
+	return outgoing(std::move(message));
 }
 
 } // namespace rtc::impl