一个客户端可以开两个websocket连接吗?

Posted 种树飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个客户端可以开两个websocket连接吗?相关的知识,希望对你有一定的参考价值。

今天做python的同学问了我一个问题,一个客户端可以开两个或者多个客户端连接吗?

答案是:可以的

推理一:

我们知道一个websocket服务端可以与多个客户端建立websocket连接,比方聊天室的实现。

推理二:

同一个客户端开两个websocket连接或者多个客户端连,其实效果是一样的,既然多个客户端可以连,为什么一个客户端开多个连接会连不了呢?

推理三:

我们知道在服务端是单线程的情况下,一个客户端连接了服务端,只要连接没有断开,其他客户端连接服务端就会处于阻塞状态,那如果服务端要实现多客户端可以连接要么是多线程实现或者协程实现和两个结合实现,所以我去查看了gevent websocket socket服务的实现果然不出所料是基于协程实现的,在压力较大时再开新线程,所以效率特别高能支持高并发,可查看我博客从IO的角度深入理解Select、Poll、Epoll的区别推理,详细解释了。

 

 

结论:

所以基于以上推理和源码解析,我们知道websocket能支持多客户端或者说多连接是因为其服务是基于多线程和协程实现的,既然支持多连接那么它是来自一个客户端或者或者多个客户端是一样一样的。

 

以上是关于一个客户端可以开两个websocket连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

即时通讯开发长连接网关技术:WebSocket实时推送网关技术

java UDP编程 两个客户端是怎么互相通讯的,类似qq那样的 客户端创建时要指定端口吗 开n个窗口要n个端口吗

我可以从 websocket 升级回 http 吗?

浏览器上的 WebSocket 客户端可以与 TCP Socket 服务器通信吗?

websocket

spring websocket客户端没有检测到网络连接丢失