Browse Source

rtmp server: improve efficiency of outgoing packets (#1395)

group together messages by using a buffered writer between the network
connection and the WriteMessage() function
pull/1405/head
Alessandro Ros 3 years ago committed by GitHub
parent
commit
c79c3c83cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      internal/rtmp/rawmessage/reader.go
  2. 7
      internal/rtmp/rawmessage/writer.go

4
internal/rtmp/rawmessage/reader.go

@ -225,11 +225,9 @@ type Reader struct { @@ -225,11 +225,9 @@ type Reader struct {
// NewReader allocates a Reader.
func NewReader(r *bytecounter.Reader, onAckNeeded func(uint32) error) *Reader {
br := bufio.NewReader(r)
return &Reader{
r: r,
br: br,
br: bufio.NewReader(r),
onAckNeeded: onAckNeeded,
chunkSize: 128,
chunkStreams: make(map[byte]*readerChunkStream),

7
internal/rtmp/rawmessage/writer.go

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
package rawmessage
import (
"bufio"
"fmt"
"time"
@ -32,7 +33,7 @@ func (wc *writerChunkStream) writeChunk(c chunk.Chunk) error { @@ -32,7 +33,7 @@ func (wc *writerChunkStream) writeChunk(c chunk.Chunk) error {
return err
}
_, err = wc.mw.w.Write(buf)
_, err = wc.mw.bw.Write(buf)
if err != nil {
return err
}
@ -136,7 +137,7 @@ func (wc *writerChunkStream) writeMessage(msg *Message) error { @@ -136,7 +137,7 @@ func (wc *writerChunkStream) writeMessage(msg *Message) error {
pos += chunkBodyLen
if (bodyLen - pos) == 0 {
return nil
return wc.mw.bw.Flush()
}
}
}
@ -144,6 +145,7 @@ func (wc *writerChunkStream) writeMessage(msg *Message) error { @@ -144,6 +145,7 @@ func (wc *writerChunkStream) writeMessage(msg *Message) error {
// Writer is a raw message writer.
type Writer struct {
w *bytecounter.Writer
bw *bufio.Writer
checkAcknowledge bool
chunkSize uint32
ackWindowSize uint32
@ -155,6 +157,7 @@ type Writer struct { @@ -155,6 +157,7 @@ type Writer struct {
func NewWriter(w *bytecounter.Writer, checkAcknowledge bool) *Writer {
return &Writer{
w: w,
bw: bufio.NewWriter(w),
checkAcknowledge: checkAcknowledge,
chunkSize: 128,
chunkStreams: make(map[byte]*writerChunkStream),

Loading…
Cancel
Save