Comments (1)
func (c *conn) write(buf []byte) {
if !c.outboundBuffer.IsEmpty() {
_, _ = c.outboundBuffer.Write(buf)
return
}
n, err := unix.Write(c.fd, buf)
if err != nil {
if err == unix.EAGAIN {
_, _ = c.outboundBuffer.Write(buf)
_ = c.loop.poller.ModReadWrite(c.fd)
return
}
_ = c.loop.loopCloseConn(c, err)
return
}
if n < len(buf) {
_, _ = c.outboundBuffer.Write(buf[n:])
_ = c.loop.poller.ModReadWrite(c.fd)
}
}
AsyncWrite()
最后会调用上面的方法写数据,可以看到n, err := unix.Write(c.fd, buf)
写数据回 client 的时候是有可能出现 temporary unavailable error 这种情况的,这时 gnet
会把数据先写入出站的 buffer,等到后续有 writable 事件来的的时候再尝试写,这样的话注册的回调函数就无法发挥作用了,因此目前无法加入这一功能。
from gnet.
Related Issues (20)
- [Question]: streaming large response in TCP HOT 4
- UDP fd什么时候调用close? HOT 1
- [Question]:How to close all connections and restart the gnet tcp server after certain time? HOT 12
- [Bug]: 产生数据竞争
- [Question]: 异步 API 简化问题 HOT 5
- [Question]: compatibility, gnet 2.x Client request gnet 1.5.3 Server HOT 2
- [Question]: TCP设置KeepAlive不生效 HOT 2
- [Bug]: Keepalive 设置不生效 HOT 2
- [Question]: 请教一下关于v2版本TCP粘包的问题 HOT 4
- [Question]: 应该如何支持 tls HOT 4
- [Feature]: 使用Engine.Stop退出时,会通过DefaultLogger输出很多错误日志 HOT 3
- [Question]: Why are http examples incompatible with MicroPython urequests
- [Bug]: bind: address already in use when using without reuseAddr parameter HOT 2
- UDP resets Context and creates new gnet.Conn OnTraffic() HOT 1
- [Feature]: 实现异步非阻塞的PacketConn接口,从而支持quic协议 HOT 2
- [Bug]: windows下的实现似乎有bug HOT 2
- [Question]: Does gnet support a websocket server that can handle different URL patterns HOT 1
- [Question]:详细的说明文档,说明什么情况下应用程序应该主动调用close方法呢 HOT 19
- [Question]: 请问 多网卡情况下,在 udp 的 OnTraffic 事件里面,怎么得到接收数据的网络接口呢 HOT 1
- [Question]: 请教运行在serverless中http的Keep-Alive应该如何配置 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gnet.