本文整理汇总了Golang中net.Conn.SetNoDelay方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.SetNoDelay方法的具体用法?Golang Conn.SetNoDelay怎么用?Golang Conn.SetNoDelay使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.Conn
的用法示例。
在下文中一共展示了Conn.SetNoDelay方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SetTCPOptions
// SetTCPOptions sets our default TCP options on a TCP connection, possibly
// digging through dialerConn to extract the *net.TCPConn
func SetTCPOptions(conn net.Conn) error {
switch conn := conn.(type) {
case *net.TCPConn:
var err error
if err = conn.SetLinger(0); err != nil {
return err
}
if err = conn.SetNoDelay(false); err != nil {
return err
}
if err = conn.SetKeepAlivePeriod(60 * time.Second); err != nil {
return err
}
if err = conn.SetKeepAlive(true); err != nil {
return err
}
return nil
case dialerConn:
return SetTCPOptions(conn.Conn)
default:
return fmt.Errorf("unknown connection type %T", conn)
}
}
示例2: serve
func (v *Rtmp) serve(c net.Conn) {
// use gfork to serve the connection.
v.wc.GFork("", func(wc core.WorkerContainer) {
defer func() {
if r := recover(); r != nil {
if !core.IsNormalQuit(r) {
core.Warn.Println("rtmp ignore", r)
}
core.Error.Println(string(debug.Stack()))
}
}()
defer func() {
if err := c.Close(); err != nil {
core.Info.Println("ignore close failed. err is", err)
}
}()
// for tcp connections.
if c, ok := c.(*net.TCPConn); ok {
// set TCP_NODELAY to false for performance issue.
// TODO: FIXME: config it.
// TODO: FIXME: refine for the realtime streaming.
if err := c.SetNoDelay(false); err != nil {
core.Error.Println("set TCP_NODELAY failed. err is", err)
return
}
}
core.Trace.Println("rtmp accept", c.RemoteAddr())
conn := protocol.NewRtmpConnection(c, v.wc)
defer conn.Close()
if err := v.cycle(conn); err != nil {
if !core.IsNormalQuit(err) && !IsControlError(err) {
core.Warn.Println("ignore error when cycle rtmp. err is", err)
} else {
core.Info.Println("rtmp cycle ok.")
}
return
}
return
})
}