Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果WebSocket使用TCP连接,通过它们进行的通信是否与TCP一样慢?_Tcp_Websocket_Udp_Socket.io - Fatal编程技术网

如果WebSocket使用TCP连接,通过它们进行的通信是否与TCP一样慢?

如果WebSocket使用TCP连接,通过它们进行的通信是否与TCP一样慢?,tcp,websocket,udp,socket.io,Tcp,Websocket,Udp,Socket.io,据我所知,WebSocket使用TCP(或相当于TCP)连接进行数据传输。如果是这样,消息是否以TCP速度传输 使我的理解更加复杂的是Socket.IO,在node中,它有时可以使用HTTP(例如使用express)启动Websocket连接。发生这种情况时,websocket信息是以HTTP速度发送还是以其他方式发送 最后,在node中,我有一个应用程序,它与服务器建立UDP连接,然后通过socket.io连接发送UDP。在这种情况下,UDP数据是否以tcp速度发送 感谢WebSockets是

据我所知,WebSocket使用TCP(或相当于TCP)连接进行数据传输。如果是这样,消息是否以TCP速度传输

使我的理解更加复杂的是Socket.IO,在node中,它有时可以使用HTTP(例如使用express)启动Websocket连接。发生这种情况时,websocket信息是以HTTP速度发送还是以其他方式发送

最后,在node中,我有一个应用程序,它与服务器建立UDP连接,然后通过socket.io连接发送UDP。在这种情况下,UDP数据是否以tcp速度发送


感谢

WebSockets是HTTP连接(如TCP)中的一种协议升级,它有自己的帧-这意味着它是TCP之上的一层,由于它自己的帧,它的开销甚至比TCP本身还要大


除此之外,TCP数据包本身并不比UDP数据包慢,使用简单的TCP连接进行的数据传输可能比使用简单的UDP连接进行的数据传输快,因为流量控制和可靠传输已经集成在一起,您不必再重新发明一切(通常更糟)谁说TCP慢?由于额外的开销,它比TCP慢。我从来没有说慢,只是比TCP慢UDP@StartecTCP发送数据的速度并不比UDP慢。有一些数据包的连接设置和拆卸成本,但除此之外,两种形式的数据流都一样快。我认为通过udp传输几乎总是更快。由于UDP不执行到达检查,它不需要更少的带宽(使用TCP,您将为发送的每条消息生成一个反向确认包),而且,因为它不会等待TCP等延迟消息,不是更快吗?UDP主要用于RTP(音频+视频传输)等协议,在这种情况下,数据包必须在短时间内到达,如果数据包丢失也可以。UDP速度更快,但以丢失数据包(可接受)为代价。但是,为了可靠地传输数据(如果数据丢失,这将是致命的),需要添加流控制、检测和重新提交丢失的数据包,例如重新实现TCP已经提供的功能。对于正常连接,TCP提供的实现已经是最佳的,但是为特殊链接(如高延迟卫星链接)创建自己的连接是有意义的。因此,从速度上来说,要打破这一切:websocket连接比“原始”TCP连接慢一点,TCP比UDP连接慢一点(当涉及到数据的实时传输时),但这是以丢失数据包为代价的-对吗?有没有关于websocket速度比“原始”慢多少的概念UDP?我正在尝试使用传输的数据创建音频反应性视频,不能承受太多延迟。对于需要低延迟的实时音频/视频,首选UDP。但是,您需要使用能够处理数据包丢失的编解码器。如果您需要传输完整的音频/视频文件,请尽快使用(例如,需要带宽使用和可靠性,而不是低延迟)您应该将TCP与一个好的编解码器结合使用,该编解码器不需要处理数据包丢失问题,因此可以提供更好的压缩。@SteffenUllrich是正确的-只有在您能够承受数据丢失的情况下,UDP比TCP快的印象才是正确的。UDP数据报的传输速度与发送方发送的速度一样快,TCP段的传输速度与接收方接受的速度一样快它们。如果你的接收器能跟上,TCP发送的速度就和UDP一样快。如果你的接收器不能跟上,TCP发送者的速度就会减慢,但在UDP中,你会丢失一些数据。