对于 Web 端 IM 的发展历程,其实大致都囊括了上面提到的几种实现方式;这些技术经过不断优化,持续提升了用户体验。其演变过程可以大致概括为从早期的轮询技术到长轮询,再发展到现代的 WebSocket、Server Push 的实现方式。而 WebSocket 的出现,则实现了更高效、更实时的即时通信。
上面我们使用 Nodejs 和浏览器 WebSocket Api 实现了一个简单的即时通信,但这还远远达不到可以在生产环境中使用的标准,比如涉及到网络异常、掉线重连、较大数据量处理、兼容性处理等问题。
当然 WebSocket 有很多成熟的库可以直接使用,比如 Socket.IO、Ws,这些库都是经过广泛使用和测试的开源项目,具有良好的稳定性和可靠性。对于生产环境使用这些成熟的库可以减少很多不必要的麻烦。作为本次需求的 IM 方案,我们则选择使用的是由 云信 提供的 Web IM 即时通讯能力;改方案提供了包括服务端和 Web 端一套完整的方案,可以快速集成到我们的工程中,实现即时通信的能力。
云信 Web SDK 提供了多种常见聊天场景,例如单聊、群聊、聊天室等。本次需求主要涉及多人场景,并且战斗不要求持久性,一场战斗由多人同时在线参与,并且在战斗结束后就解散,所以这里选择使用的是聊天室场景。