关于使用WebSocket的问题

来源:11-4 基于web_socket_channel实现弹幕通信

LBruce

2025-02-28

如果是要进一步追求性能的话,其实用TCP协议会更好吧。HTTP和WebSocket都是应用层协议,而用TCP的话,直接在传输层就可以进行处理了。而且还可以和服务端自定义内容协议,比如使用protobuf序列化等等。后端用Netty就可以轻松搭起来一个TCP服务器了,如果不考虑每条实时弹幕都要确保一定要传送到目标设备的话,用UDP还能省去三次握手四次挥手。

老师对这方面怎么看?谢谢老师解答

写回答

1回答

CrazyCodeBoy

2025-03-02

如果是 Web 端:WebSocket 是更现实的选择,基于 TCP 实现,并且前端易用。

如果是原生客户端(如移动端或桌面端):可以直接基于 TCP(如果需要可靠性)或 UDP(如果追求低延迟)进行封装。

如果弹幕的实时性要求极高(如直播场景),UDP + 自定义协议可能是更优选择,但需要额外处理丢包问题。

如果后端要兼顾多个协议,可以考虑 Netty,同时支持 TCP 和 UDP,根据需求适配。


所以,是否选择 TCP 取决于你的需求——如果你愿意在应用层构建丢包处理、重传等逻辑,UDP 确实可以降低开销;否则,WebSocket(基于 TCP)更稳定、更易维护。
0
0

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1763 学习 · 886 问题

查看课程