websocket引入epoll机制

原理 正常情况下,不使用epoll,每建立一个ws连接我们都会启一个goroutine来处理客户端发来的消息,如果客户端没有消息,这个goroutine就会阻塞在读消息的状态。有多少个连接就会有多少个goroutine,虽然goroutine比较轻量,但在大量连接的情况下还是比较耗费资源还是很大的。 使用epoll后会把所有ws连接的fd(文件描述符)放入一个epoll队列中,只启一个goroutine对epoll wait进行轮询获取缓冲区有内容的ws连接。这样就把之前要起n个goroutine变成了1个,随着连接数的增加性能的提升也会越来越明显。 ...

September 15, 2020 · 6 min · mengboy

sse(serve send events) 服务端推送技术

什么是sse sse 指 serve send events,是一种基于http的服务端想客户端推送事件的技术,通常http请求都是请求–>应答的模式,一次request–>response结束后,连接就断开了,前端需要请求新的资源就需要重新建立连接,再次发起请求,当然http2.0后可以使用多路复用,不必建立新的连接。而sse指连接建立成功后,后端可以不断向前端推送消息。 ...

September 12, 2020 · 3 min · mengboy