一个客户端可以开两个websocket连接吗?
今天做python的同学问了我一个问题,一个客户端可以开两个或者多个客户端连接吗?
答案是:可以的
推理一:
我们知道一个websocket服务端可以与多个客户端建立websocket连接,比方聊天室的实现。
推理二:
同一个客户端开两个websocket连接或者多个客户端连,其实效果是一样的,既然多个客户端可以连,为什么一个客户端开多个连接会连不了呢?
推理三:
我们知道在服务端是单线程的情况下,一个客户端连接了服务端,只要连接没有断开,其他客户端连接服务端就会处于阻塞状态,那如果服务端要实现多客户端可以连接要么是多线程实现或者协程实现和两个结合实现,所以我去查看了gevent websocket socket服务的实现果然不出所料是基于协程实现的,在压力较大时再开新线程,所以效率特别高能支持高并发,可查看我博客从IO的角度深入理解Select、Poll、Epoll的区别推理,详细解释了。
结论:
所以基于以上推理和源码解析,我们知道websocket能支持多客户端或者说多连接是因为其服务是基于多线程和协程实现的,既然支持多连接那么它是来自一个客户端或者或者多个客户端是一样一样的。