公司打算做webRTC,场景是这样的,可能在规定时间内,有5000多人同时在线,然后1对N发起视频通话,方案确定使用webRTC来实现,首先要解决第一个问题,这么多人同时在线,最开始考虑websocket,但查询发现,websocket有连接数限制,等于要部署多个tomcat才行,这个方案就不考虑了,后面查询到netty,说是支持百万连接,那决定用netty来做,netty当webRTC的信令服务器,同时也管理所有的连接,但查询到前端,却是用websocket连的服务器,我的问题是,这会不会也和websocket通信一样,也需要N个tomcat才能支持所有人在线了?或者换个问法,websocket连接netty,走的通信是不是已经不是ws,而是socket通信了?
你知道大家选websocket而不选socket的原因吗?因为浏览器不支持socket,所以你用websocket就不用考虑socket的问题。你选tomcat还是选netty完全不是问题,如果你用springboot的话,只是买一个maven依赖的事,想切换成啥就切换成啥。5000人,我感觉用netty比较合适。直播肯定用异步io合适,这是毫无疑问的。就看你会不会用了。至于一台服务器能不能支持5000人,我觉得可以。
引用来自“bambi2017”的评论
你知道大家选websocket而不选socket的原因吗?因为浏览器不支持socket,所以你用websocket就不用考虑socket的问题。你选tomcat还是选netty完全不是问题,如果你用springboot的话,只是买一个maven依赖的事,想切换成啥就切换成啥。5000人,我感觉用netty比较合适。直播肯定用异步io合适,这是毫无疑问的。就看你会不会用了。至于一台服务器能不能支持5000人,我觉得可以。
感谢您的回答,这个问题其实是看到一些资料后的疑惑。
<Connector port="8180" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" acceptCount="4000" maxThreads="500" maxConnections="4000">
tomcat 中如上的有一段配置, maxConnections,按照说法,这个就是影响连接数的,如果这个设置比较小,是不是netty也就不能实现百万连接了,如果连接数比较多,就需要多个tomcat来部署多个netty这样吗?
udp, 握手后就可以释放
首先你要弄清除websocket与socket的区别与联系.这里的websocket是基于tcp的协议.Netty只是一个网络框架.基于它可以实现基于TCP的多种协议实现.websocket只是基于TCP上的一个应用层协议.5000人同时在线并不是什么难事,单机加足够内存足以. 你要做多人音视频通讯.信令服务器只是其中一个技术点,更多是需要媒体服务器的支持.
不是什么都需要部署在web容器里面运行.如果只是支持websocket协议,完全可以可以独立运行,不需要任何web服务器.
tomcat也可以用nio
SpringBootCloud + Netty-Socketio 了解下
为什么需要tomcat?