SSE 长链接

文章讲述了在前端与后端、web3合约交互中,如何在链上交易成功后自动更新前端状态的问题。作者探讨了WebSocket的局限性,介绍了Server-SentEvents(SSE)作为更轻量级且无需服务端额外支持的替代方案。
摘要由CSDN通过智能技术生成

业务场景: 前端, 后端, web3合约三方交互,前端点击功能按钮,向链上发送数据,链上交易成功后,需要调用后端接口,更新按钮状态;

问题:链上合约状态一直是服务器通过监听,成功与否都是前端主动调用服务器接口才能获取结果;要想实现链上成功后前端主动更新页面,一个方案是:前端主动监听交易状态,但是由于对web3并不是很熟悉,而且时间紧急,所以不太适合;另一个就是实时消息推送,websocket的话,使用的是ws协议,就需要服务端同学的支持,后来临时解决,只能前端主动轮询,用setInterval去轮询请求服务器接口,因为服务器的超时时间设置为15s , 所以约定前端每个3s请求一次,请求5次;

最近冲浪看到了其他同行的分享,长链接的另外一种方法,sse, 所以决定记录下,多一种解决方案, 以备不时之需 !!!

参考链接:

你还在使用websocket实现实时消息推送吗? - 掘金 (juejin.cn)

SSE:服务器发送事件_w3cschool

ChatGPT对话为什么不用Websocket而使用EventSource? - 掘金 (juejin.cn)

sse是一个单向通讯的协议也是一个长链接,它只能支持服务端主动向客户端推送数据,但是无法让客户端向服务端推送消息。(这也是sse与websocket的区别,根据场景自行选择);

SSE的优点是,它是一个轻量级的协议,相对于websockte来说,他的复杂度就没有那么高,相对于客户端的消耗也比较少。而且SSE使用的是http协议(websocket使用的是ws协议),也就是现有的服务端都支持SSE,无需像websocket一样需要服务端提供额外的支持。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值