即使不涉及Web浏览器,也可以在原始tcp上使用websocket:好主意?



在查看了原始TCP和websocket之间的差异之后,我正在考虑使用websocket,即使它将是一个没有Web浏览器的客户端/服务器系统。我的动机源于:

  1. websocket 是面向消息的,所以我不必在 tcp 层的顶部写下协议来自己分隔消息。
  2. websocket 的初始握手非常适合我的用例,因为我可以在这个初始响应请求交换中对用户进行身份验证/授权。

性能在这里确实很重要,我想知道,除了 websocket 握手之外,websocket 消息与在原始 tcp 上编写自定义协议之间是否会有性能损失?如果没有,那么 websocket 对我来说是最方便的选择,即使我不使用与"web"部分相关的好处。

使用 wss 也会改变上述问题的答案吗?

你基本上是在问,使用一个已经实现的库,它完全符合你的要求,甚至有安全连接(WSS(的选项,是否比在TCP上设计和实现你自己的基于消息的协议更好,假设性能和开销与你的用例无关。

如果你以这种方式重新表述你的问题,答案应该是显而易见的:使用适合你目的的现有实现可以节省大量的时间和设计、实现和测试的麻烦。培训开发人员使用此协议也更容易。调试问题更容易,因为像Wireshark这样的常用工具已经理解了协议。

除此之外,websockets还具有使用代理的既定机制,使用通用协议,以便它们可以更轻松地通过防火墙等。因此,在推出应用程序时,您可能会遇到较少的问题。

换句话说:如果websockets符合你的目的,我看不出为什么不应该使用websockets。

最新更新