普通socket, rpc, websocket,http等
rpc的用法是客户端直接调用服务端的函数,其实他就是把数据传给服务端,服务端处理完以后返回给客户端, websocket是把数据发出去,他是在tcp之上一层的,他有发送结束标志,就是一次ws.send的结束,服务器会知道,服务器按照协定可以拿出完整的一次ws.send那么区别就出来了:websocket并不关系对方拿到数据后处理的过程是否完成,而rpc是和处理过程相关的,其实他们不是同一个级别的东西。如果是 短连接的 话, rpc更像是http, rpc适合 做数据同步 ,websocket适合 做流 ,当然也可以用websocket实现rpc https://www.jianshu.com/p/3b5955940998 这个问题其实是有理解误区的,首先 http 和 rpc 并不是一个并行概念。 rpc是远端调用协议, 包含 传输协议和编码协议。 传输协议包含: 如著名的 [gRPC]( grpc / grpc.io** ) 使用的 http2 协议,也有如dubbo一类的自定义报文的tcp协议。 编码协议包含: 如基于文本编码的 xml json,也有二进制编码的 protobuf binpack 等。 因此我理解的你想问的问题应该是: 为什么要使用自定义 tcp 协议的 rpc 做后端进程通信? 要解决这个问题就应该搞清楚 http 使用的 tcp 协议,和我们自定义的