增加一个保持连接开关,默认关闭

This commit is contained in:
dexter
2022-05-26 20:36:04 +08:00
parent 7f83dc503b
commit cbe785deda
3 changed files with 9 additions and 0 deletions

View File

@@ -62,6 +62,7 @@ rtmp:
repush: 0 # 当断开后是否自动重新推流0代表不进行重新推流-1代表无限次重新推流
pushlist: {} # 推流列表,以 streamPath为key远程地址为value
chunksize: 4096
keepalive: false #保持rtmp连接默认随着stream的close而主动断开
```
:::tip 配置覆盖
publish

View File

@@ -15,6 +15,7 @@ type RTMPConfig struct {
config.Pull
config.Push
ChunkSize int
KeepAlive bool //保持rtmp连接默认随着stream的close而主动断开
}
func (c *RTMPConfig) OnEvent(event any) {
@@ -59,6 +60,7 @@ func (c *RTMPConfig) OnEvent(event any) {
}
}
}
var conf = &RTMPConfig{
ChunkSize: 4096,
TCP: config.TCP{ListenAddr: ":1935"},

View File

@@ -130,6 +130,9 @@ func (config *RTMPConfig) ServeTCP(conn *net.TCPConn) {
},
}
receiver.SetParentCtx(ctx)
if !config.KeepAlive {
receiver.SetIO(conn)
}
if plugin.Publish(nc.appName+"/"+cmd.PublishingName, receiver) == nil {
receivers[cmd.StreamId] = receiver
receiver.absTs = make(map[uint32]uint32)
@@ -146,6 +149,9 @@ func (config *RTMPConfig) ServeTCP(conn *net.TCPConn) {
cmd.StreamId,
}
sender.SetParentCtx(ctx)
if !config.KeepAlive {
sender.SetIO(conn)
}
sender.ID = fmt.Sprintf("%s|%d", conn.RemoteAddr().String(), sender.StreamID)
if plugin.Subscribe(streamPath, sender) != nil {
sender.Response(cmd.TransactionId, NetStream_Play_Failed, Level_Error)