web开发中的通信协议

  1. websocket

def:websocket协议是基于tcp的,实现浏览器与服务器之间全双工通信的一种网络协议

websocket是一种持久协议,多应用在聊天,客服咨询等有实时报送需求的场景下。

早期没有websocket时,通过ajax短时轮询,客户端发送http请求给服务器,服务器再给客户端进行响应,服务器无法给浏览器主动发送数据,所以浏览器需要定时给服务器发送请求,这很大程度的浪费资源和性能。

特点:

websocket事件与方法

nodejs创建自己的websocket服务:

1)导入nodejs-websocket包

2)创建server

3)监听端口

  1. webrtc

def:web real time communication 网页及时通信,一种支持网页浏览器进行实时语音对话或视频对话的 API,允许浏览器之间直接连接

在websocket中客户端之间的通信还是需要经过服务器的中转,在webrtc中两个客户端可以直接进行对等连接

1)信服令服务器

2)stun服务器

当设备不在同一个本地网络中时,只能通过公共IP地址来实现相互访问,但设备有时难以获得公共IP地址,所以需要stun服务器获取公共 IP地址

3)turn服务器

turn服务器是在客户端连接失败时,进行转接的点,由于其本身位于公网上,所以能被各个客户端找到

  1. sse

def:Server-sent events(SSE)是一种用于实现服务器到客户端的单向通信的协议。使用SSE,服务器可以向客户端推送实时数据,而无需客户端发出请求

SSE建立在HTTP协议上,使用基于文本的数据格式(通常是JSON)进行通信。客户端通过创建一个EventSource对象来与服务器建立连接,然后可以监听服务器发送的事件。服务器端可以随时将事件推送给客户端,客户端通过监听事件来接收这些数据

与其他实时通信协议(如WebSocket)相比,Server-sent events通信是一种轻量级协议,易于实现和部署。此外,它也具有广泛的浏览器兼容性,并且可以在不需要特殊网络配置的情况下使用

ChatGPT是一个基于深度学习的大型语言模型,处理自然语言文本需要大量的计算资源和时间。因此,返回响应的速度肯定比普通的读数据库要慢的多,Http接口显然并不合适,因为Http是一次性返回,等待时间过长,而Websocket又过重,因为全双工通信并不适合这种单项对话场景,所谓单项对话场景,就是对话双方并不会并发对话,而是串行的一问一答逻辑,同时持久化链接也会占用服务器资源,要知道ChatGPT几乎可以算是日均活跃用户数全球最高的Web应用了。

效率层面,大型语言模型没办法一下子返回所有计算数据,但是可以通过Server-sent events将前面计算出的数据先“推送”到前端,这样用户也不会因为等待时间过长而关闭页面,所以ChatGPT的前端观感就是像打字机一样,一段一段的返回答案,这种“边计算边返回”的生成器模式也提高了ChatGPT的回答效率。

sse详细:https://www.zhihu.com/question/583939974/answer/2926278692

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值