我正在创建一个聊天客户端,它允许用户使用他们的网络摄像头并发送他们的视频。这是一个基于局域网的软件。不会有语音聊天,只有视频和文字。
此外,除了群聊之外,还可以进行一对一的聊天,允许用户使用网络摄像头。会议聊天中没有网络摄像头。还将进行文件共享。
我最初的猜测是客户端和服务器之间需要一个线程用于会议文本聊天,1 个线程用于一对一文本聊天,每个启动网络摄像头的用户需要 1 个线程。每个一对一聊天有 1 个线程用于文件共享,n 线程用于会议中的文件共享,其中 n 是一次连接的用户数
我正在创建一个聊天客户端,它允许用户使用他们的网络摄像头并发送他们的视频。这是一个基于局域网的软件。不会有语音聊天,只有视频和文字。
此外,除了群聊之外,还可以进行一对一的聊天,允许用户使用网络摄像头。会议聊天中没有网络摄像头。还将进行文件共享。
我最初的猜测是客户端和服务器之间需要一个线程用于会议文本聊天,1 个线程用于一对一文本聊天,每个启动网络摄像头的用户需要 1 个线程。每个一对一聊天有 1 个线程用于文件共享,n 线程用于会议中的文件共享,其中 n 是一次连接的用户数
假设您使用 java 进行客户端实现,您可以为每个用户使用一个线程进行群聊,如果您想要 p2p 连接,则可以为每个一对一连接使用一个线程(出于安全原因,您可以通过服务器进行初始握手,然后在 p2p 模式下继续)。
如果您打算使用 websocket 和 web 客户端,则不能使用 p2p,因为浏览器只能启动 websocket 连接,但不能接受。要为每个客户端使用一个通道,您可以为传出数据包标记内容类型并对其进行适当解码。该方案在 netty 中很容易实现,您可以将协议实现放在 TCP\IP 套接字之上。此外,由于 netty 是异步的,您可以通过 NIO 获得一些速度提升