Networking 在原始tcp上使用websocket,即使不涉及web浏览器:好主意?

Networking 在原始tcp上使用websocket,即使不涉及web浏览器:好主意?,networking,tcp,websocket,Networking,Tcp,Websocket,在回顾了原始TCP和websocket之间的区别之后,我考虑使用websocket,尽管它将是一个没有web浏览器的客户机/服务器系统。我的动机来自: websocket是面向消息的,所以我自己不必在tcp层上写下协议来定义消息 websocket的初始握手非常适合我的用例,因为我可以在这个初始响应请求交换中对用户进行身份验证/授权 不过,性能在这里确实很重要,我想知道,除了websocket握手,websocket消息与在原始tcp上编写自定义协议相比,是否会有性能损失?如果没有,那么webs

在回顾了原始TCP和websocket之间的区别之后,我考虑使用websocket,尽管它将是一个没有web浏览器的客户机/服务器系统。我的动机来自:

  • websocket是面向消息的,所以我自己不必在tcp层上写下协议来定义消息
  • websocket的初始握手非常适合我的用例,因为我可以在这个初始响应请求交换中对用户进行身份验证/授权
  • 不过,性能在这里确实很重要,我想知道,除了websocket握手,websocket消息与在原始tcp上编写自定义协议相比,是否会有性能损失?如果没有,那么websocket对我来说是最方便的选择,即使我没有使用与“web”部件相关的好处


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

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

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

    除此之外,WebSocket有一个使用代理的既定机制,使用一个通用的协议,这样它们可以更容易地通过防火墙等。因此,在推出应用程序时,您可能会遇到更少的问题


    换句话说:如果websocket符合您的目的,我看不出有什么理由不使用它们。

    wss只是基于TLS/SSL的websocket安全会话,因此会带来更多开销。还可以看看一些更高级的websocket协议,例如WAMP[协商经过身份验证和授权的连接的干扰性较小。WebSocket在每个帧上都有开销,这可能是相当大的。当然,您设计的任何消息传递协议都有开销,但您可以在每条消息之前做一些简单的事情,比如一个16位长的字,这是最小的。呵呵,是真的。主要是我t被称为websocket,但实际上系统中并没有太多的“web”,所以想知道我是否遗漏了什么,我的权衡是什么。谢谢!