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 协议,和我们自定义的 tcp 协议在报文上的区别。
那么假如我们使用自定义tcp协议的报文如下:
报头占用的字节数也就只有16个byte,极大地精简了传输内容。
这也就是为什么后端进程间通常会采用自定义tcp协议的rpc来进行通信的原因。
来源:https://blog.csdn.net/sun007700/article/details/99672063