我将为移动应用程序部署一个nodejs服务器,在移动应用程序中我使用websocket与服务器通信。
我想知道我是否可以停止使用http,而只使用websocket?这种解决方案的优点和缺点是什么?
我想知道我是否可以停止使用http,而只使用websocket?
如果你有一个自定义客户端,那么是的,这是100%可能的。
但如果你的客户端嵌入在浏览器中,那么不,100%是不可能的。因为至少您需要通过HTTP执行websocket握手。此外,您还需要通过纯HTTP提供主页(带有嵌入式JavaScript)。除此之外,完全可以切换到websocket。
这种解决方案的优点和缺点是什么?
优点
- 真实的服务器推送(您可以轻松地通知客户端)
- 与HTTP相比,在顶部使用适当的协议(例如json-rpc)是非常高效的
- 非常灵活
缺点
- 它几乎是TCP,所以您仍然需要在此基础上构建一个自定义协议。这实际上可能很难正确实施。特别是如果您想将文本内容(例如json)与二进制内容(例如图像)混合使用。结果可能是,您将通过websocket重新实现HTTP
- 可能很难很好地扩展(同样,取决于顶级协议)
- 与HTTP相比理解不足
- 仍然很新,没有HTTP那么多工具
因此,正如你所看到的,大多数担忧都来自于这样一个事实,即它是新的,你将不得不用它做大量的手工工作。话虽如此,我个人的意见是支持它。如果你不这样做,谁会这样做?:)至少要通过websocket提供API,并通过HTTP提供静态文件。
如果你计划让你的移动应用程序成为一个成熟的网站,那么使用HTTP+WebSocket而不是仅仅使用WebSocket可能有很大的理由。此外,HTTP的存在时间比WebSocket长,因此我将继续假设对HTTP的支持比对WebSocket的支持更广泛,所以如果你曾经为你的应用程序制作过API,那么拥有HTTP可能是一件好事。