可能有些不了解的童鞋要问了,什么是deno?
实现流模式的响应
那么这几种方式,各自的优缺点如下:
我们得了解下,在deno中,如何用标准库实现一个httpserver。
短轮询:优点是实现简单,不需要特殊的技术支持;缺点是效率低,浪费资源,不能实时推送消息。长轮询:优点是能够实时推送消息,减少无效请求;缺点是服务器压力大,需要保持连接并及时返回新消息。流信息:优点是能够实时推送消息,节省资源,避免轮询的缺陷;缺点是只能单向通信,需要客户端支持EventSource接口。WebSocket:优点是能够实现双向通信,效率高,节省资源;缺点是需要客户端和服务器都支持WebSocket接口和协议。
deno官方的示例中,有一个示例展示如何发送流数据。
短轮询:客户端定时向服务器请求数据,服务器立即返回响应信息。长轮询:客户端向服务器请求数据,服务器保持连接,直到有新消息才返回响应信息并关闭连接。流信息:客户端向服务器请求数据,服务器声明要发送一个数据流,连续不断地发送数据给客户端。WebSocket:客户端和服务器建立一个双向通信的连接,可以互相发送和接收数据。
在我们的前端页面里,可以直接通过下面的方式,调用该接口:
用deno实现一个Server-sentevents接口
短轮询:适合数据更新频率不高,实时性要求不高的场景,例如新闻、博客等。长轮询:适合数据更新频率较高,实时性要求较高的场景,例如聊天、通知等。流信息:适合数据更新频率较高,实时性要求较高的场景,且只需要单向通信的场景,例如股票行情、在线直播等。WebSocket:适合数据更新频率较高,实时性要求较高的场景,且需要双向通信的场景,例如在线游戏、视频会议等。
那么我们如何用deno,实现一个Server-sentevents接口呢?
这几种推送消息的方式,实现原理的区别如下:
通常情况下,在bs架构的体系中,服务器想要向客户端推送消息,主要有以下几种方式:
我们结合Server-sentevents的要求,
这些方式,各自适合以下使用场景:
最简单的实现方式,如下面的示例所示:
短轮询:不需要特殊的技术支持,只需要客户端和服务器之间能够进行HTTP请求和响应即可。长轮询:不需要特殊的技术支持,只需要客户端和服务器能够进行HTTP请求和响应即可,但是服务器要能够保持连接并及时返回新消息。流信息:需要客户端支持EventSource接口,需要服务器能够发送Content-Type:text/event-stream的响应,并且遵循一定的格式规范。WebSocket:需要客户端支持WebSocket接口,需要服务器能够升级HTTP连接为WebSocket连接,并且实现WebSocket协议。
了解完以上这些前置信息后,回到我们这篇文章想要谈论的正题上来。
我们知道,Server-sentevents是一种通过HTTP实现web前端应用的服务器端推送的规范,它是属于上面我们说到的流信息的一种。
文章为作者独立观点,不代表股票配资公司观点