精华内容
下载资源
问答
  • WebSocket

    2019-09-03 11:38:10
    WebSocket 一 、什么是websocketWebSocket协议RFC 6455为Web应用程序定义了一项重要的新功能:客户端... 客户端服务器频率低延迟交换事件。 三、 应用场景 弹幕,即时新闻,弹窗。例如监视网络故障。 ...

    WebSocket

    一 、什么是websocket?

            WebSocket协议RFC 6455为Web应用程序定义了一项重要的新功能:客户端和服务器之间的全双工,双向通信。其历史悠久的技术使网络更具互动性。

     

    二 、为什么用websocket?

          客户端服务器高频率低延迟交换事件。

     

    三、 应用场景

          弹幕,即时新闻,弹窗。例如监视网络故障。

     

    四 、怎么做到消息发送?

    1.握手

    它依赖于HTTP内置的机制来请求协议升级(或者在这种情况下是协议交换机)服务器可以使用HTTP状态响应101 (切换协议)如果同意的话。假设握手成功,HTTP升级请求下的TCP套接字保持打开状态,客户端和服务器都可以使用它来相互发送消息。

     

    2. TCP套接字保持打开状态

    WebSocket传输只需要一个HTTP请求即可进行WebSocket握手。此后的所有消息都在该套接字上交换。

     

    3、内部结构图

    消息  - 包含标头和有效负载的消息。

    MessageHandler  - 处理消息的合同。

    MessageChannel  - 发送消息的合同,允许发送方和接收方之间松散耦合。

    SubscribableChannel  - 扩展MessageChannel并向注册MessageHandler用户发送消息。

    ExecutorSubscribableChannel  - 具体实现SubscribableChannel可以通过线程池异步传递消息

     

     

    五、 实际应用

    可以将WebSocket范围的bean注入到控制器中,并在“clientInboundChannel”上注册任何通道拦截器。这些通常是单身,比任何单个WebSocket会话都活得更长。

    与任何自定义作用域一样,Spring Bean在第一次从控制器访问时初始化一个新实例,并将该实例存储在WebSocket会话属性中。随后返回相同的实例,直到会话结束。WebSocket范围的bean将调用所有Spring生命周期方法。

     

    展开全文
  • 公司要做一个移动端通讯聊天,考虑到是公司内部使用,没有采用第三方收费通讯接口,刚开始尝试过nginx+rtmp,但是视频延迟,后来经过查询测试总结,最终使用websocket+webrtc实现,测试延迟最高为0.3s左右,可以...
  • WebSocket的使用场景

    千次阅读 2018-03-19 16:04:46
    这一类聊天app的特点是低延迟即时。即时是这里面要求最高的,如果有一个紧急的事情,通过IM软件通知你,假设网络环境良好的情况下,这条message还无法立即送达到你的客户端上,紧急的事情都结束了,你才收到消息...

    WebSocket使用场景

    1.社交聊天

    最著名的就是微信,QQ,这一类社交聊天的app。这一类聊天app的特点是低延迟,高即时。即时是这里面要求最高的,如果有一个紧急的事情,通过IM软件通知你,假设网络环境良好的情况下,这条message还无法立即送达到你的客户端上,紧急的事情都结束了,你才收到消息,那么这个软件肯定是失败的。

    2.弹幕

    说到这里,大家一定里面想到了A站和B站了。确实,他们的弹幕一直是一种特色。而且弹幕对于一个视频来说,很可能弹幕才是精华。发弹幕需要实时显示,也需要和聊天一样,需要即时。

    3.多玩家游戏

    4.协同编辑

    现在很多开源项目都是分散在世界各地的开发者一起协同开发,此时就会用到版本控制系统,比如Git,SVN去合并冲突。但是如果有一份文档,支持多人实时在线协同编辑,那么此时就会用到比如WebSocket了,它可以保证各个编辑者都在编辑同一个文档,此时不需要用到Git,SVN这些版本控制,因为在协同编辑界面就会实时看到对方编辑了什么,谁在修改哪些段落和文字。

    5.股票基金实时报价

    金融界瞬息万变——几乎是每毫秒都在变化。如果采用的网络架构无法满足实时性,那么就会给客户带来巨大的损失。几毫秒钱股票开始大跌,几秒以后才刷新数据,一秒钟的时间内,很可能用户就已经损失巨大财产了。

    6.体育实况更新

    全世界的球迷,体育爱好者特别多,当然大家在关心自己喜欢的体育活动的时候,比赛实时的赛况是他们最最关心的事情。这类新闻中最好的体验就是利用Websocket达到实时的更新!

    7.视频会议/聊天

    视频会议并不能代替和真人相见,但是他能让分布在全球天涯海角的人聚在电脑前一起开会。既能节省大家聚在一起路上花费的时间,讨论聚会地点的纠结,还能随时随地,只要有网络就可以开会。

    8.基于位置的应用

    越来越多的开发者借用移动设备的GPS功能来实现他们基于位置的网络应用。如果你一直记录用户的位置(比如运行应用来记录运动轨迹),你可以收集到更加细致化的数据。

    9.在线教育

    在线教育近几年也发展迅速。优点很多,免去了场地的限制,能让名师的资源合理的分配给全国各地想要学习知识的同学手上,Websocket是个不错的选择,可以视频聊天、即时聊天以及其与别人合作一起在网上讨论问题…

    10.智能家居

    这也是我一毕业加入的一个伟大的物联网智能家居的公司。考虑到家里的智能设备的状态必须需要实时的展现在手机app客户端上,毫无疑问选择了Websocket。

    11.总结

    从上面我列举的这些场景来看,一个共同点就是,高实时性!

    展开全文
  • 在web上,需要在客户端(典型如浏览器)和服务器间进行频率低延迟的消息交换是在应用中必不可少的,它使有效的,双向的通信成为可能。常见的例子包括交易,游戏,协作,数据可视化,其他的一系列场景和用例将随...

     

     

    正如你可能已经看到的,Spring Framework 4.0 第一个里程碑版本已经宣布,且我们已经发布了早期的WebSocket支持。为什么WebSocket重要呢?在web上,需要在客户端(典型如浏览器)和服务器间进行高频率低延迟的消息交换是在应用中必不可少的,它使有效的,双向的通信成为可能。常见的例子包括交易,游戏,协作,数据可视化,其他的一系列场景和用例将随时间而增加。

     

    WebSocket是非常宽泛的话题!你可以在InfoQ上观看我们SpringOne 2012的“WebSocket介绍”获取更全面的介绍。能够简单的使用WebSocket仅仅是一个开始。你将需要一个备用策略用于那些不支持它的浏览器(如 IE < 10)和用于阻止其使用的网络代理。此外,套接字编程,是非常,非常低级的编程。大多数的应用将受益于一个更高级的编程模型。这也是公认的,在WebSocket协议中通过一种机制 来允许使用一个“子协议”(例如一个更高级别的协议),就像今天我们都使用的HTTP,不是一个原始的TCP套接字。例如,子协议包括STOMPWAMP,和更多其它的。

     

    请记住,这是一个早期版本。它关注的基本面包括JSR-356支持和浏览器内部使用的备选项(fallback options)。也没有子协议支持,那是下一个里程碑版本的目标。

     

     

    WebSocket的Java API  (JSR-356)

     

    WebSocket的Java API是最近完成的并是Java EE 7的一部分。它定义了两种类型的端点—Endpoint子类及注解的端点,如@ClientEndpoint和@ServerEndpoint。完整的介绍超出了本文的范围。我将只会提到在Spring应用中理解如何配置和使用端点的最低要求。

     

    在JSR-356中有两种方法来部署服务器 — 通过Servlet容器扫描(Servlet 3.0特性)和在编程式启动。对于Servlet容器扫描,规范要求注解的端点有一个默认构造器,但Endpoint子类不能被自动部署。相反,Servlet容器扫描检测ServerApplicationConfig类型,其按照预期的循环为每一个Endpoint应用Server/ClientEndpointConfig。

     

    在试图搞清楚这一切之前,你可能想知道的是它如何与你的Spring应用关联。M1版本通过Spring提供了用于初始化两种类型端点的全部支持,包括适当的构造器依赖注入以及每个连接和单例端点生命周期。此外,你应该关闭Servlet容器扫描,其是相当重量级的并扫描所有类包括第三方依赖。

     

    给我代码!

     

    用Spring初始化一个注解的端点,只需简单地用类级别注解配置一个SpringConfigurator:

    import javax.websocket.server.ServerEndpoint;
    import org.springframework.web.socket.server.endpoint.SpringConfigurator;
     
    @ServerEndpoint(value = "/echo", configurator = SpringConfigurator.class)
    public class EchoEndpoint {
     
      private final EchoService echoService;
     
      @Autowired
      public EchoEndpoint(EchoService echoService) {
        this.echoService = echoService;
      }
     
      @OnMessage
      public void handleMessage(Session session, String message) {
        // ...
      }
     
    }

    上面的代码假设SpringContextLoaderListener用于装载Spring配置, 但通常是在web应用的情况。除此之外没有别的要求。Servlet容器扫描发现注解的端点和SpringConfigurator为每个WebSocket会话初始化一个新的实例,这也是规范中定义的默认的生命周期。

     

    如果你想使用一个单例或想关闭Servlet容器扫描,声明EchoEndpoint作为一个Spring bean,且也加添加一个forServerEndpointExporter bean声明(只需一次!)。如下示例使用Spring的Java配置,但你也可以添加基于XML配置等价的声明。

    import org.springframework.web.socket.server.endpoint.ServerEndpointExporter;
     
    @Configuration
    public class EndpointConfig {
     
      @Bean
      public EchoEndpoint echoEndpoint() {
        return new EchoEndpoint(echoService());
      }
     
      @Bean
      public EchoService echoService() {
        // ...
      }
     
      @Bean
      public ServerEndpointExporter endpointExporter() {
        return new ServerEndpointExporter();
      }
     
    }
    

     Endpoint子类能连同一个ServerEndpointExporter声明(只需一次)一起通过EndpointRegistration被部署。

    import org.springframework.web.socket.server.endpoint.ServerEndpointExporter;
    import org.springframework.web.socket.server.endpoint.ServerEndpointRegistration;
     
    @Configuration
    public class EndpointConfig {
     
      @Bean
      public EndpointRegistration echoEndpoint() {
        return new EndpointRegistration("/echo", EchoEndpoint.class);
      }
     
      @Bean
      public ServerEndpointExporter endpointExporter() {
        return new ServerEndpointExporter();
      }
     
      // ..
     
    }

    EndpointRegistration也有一个接受一个端点实例参数的构造器。这允许你在有每个WebSocket会话有一个新实例或单个实例服务所有会话间进行选择。

     

     

    客户端呢?

     

    JSR-356提供如下API用于连接服务器:

    WebSocketContainer container = ContainerProvider.getWebSocketContainer();
    container.connectToServer(EchoEndpoint.class, new URI("ws:localhost:8080/webapp/echo"));

    这是很简单的,但如果也能声明它也将是不错的。常见的情况是 — 当web应用启动时,它应该自动的连接到远程端点,开始处理消息并当应用关闭时停止。

     

    你可以通过一个如下所示的连接管理器来做到,即当Spring ApplicationContext刷新或关闭时分别进行WebSocket连接建立和关闭。

    import org.springframework.web.socket.client.endpoint.AnnotatedEndpointConnectionManager;
     
    @Configuration
    public class EndpointConfig {
     
      // For Endpoint sub-classes use EndpointConnectionManager instead
     
      @Bean
      public AnnotatedEndpointConnectionManager connectionManager() {
        return new AnnotatedEndpointConnectionManager(echoEndpoint(), "ws://localhost:8080/webapp/echo");
      }
     
      @Bean
      public EchoEndpoint echoEndpoint() {
        // ...
      }
     
    }
    

    你也可以使用autoStartup属性来开启/禁用自动连接。如果禁用,你可以手工调用start()和stop()。

     

    到此总结了JSR-356支持的概述。

     

     

    Spring WebSocket API

    除了JSR-356的支持,这个版本提供了导致一些明显问题的Spring WebSocket API的新的开始。

     

    为什么是我们自己的API?我们在内部它作为更高级服务的基础如SockJS。它允许我们有可能插入额外的Java WebSocket实现并添加额外的特性。例如JSR-356没有提供从一个存在的Servlet初始化WebSocket握手的方式,当添加SockJS支持时这让我们发现非常有用。此外,尽管Jetty也没有提供JSR-356支持,我们也是能够在这个版本插入(所有新的)Jetty 9 WebSocket API和包括Jetty 9支持。我们可以坚持使用Jetty API直接前进,因为它提供了一组更丰富的WebSocket配置和处理选项及比Java WebSocket API更频繁的更新。

     

    为什么仅基于类型(例如,不是注解)?Spring WebSocket API以框架使用为主为目标。应用当然可以使用它,但我们相信,到套接字的编程对于大多数应用来组织他们的业务逻辑和提供健壮的消息处理太低级了。为了更好地体会到这一点,可以考虑如果一个应用暴露单个WebSocket连接(在大多数情况,它应该),它将不得不从单个类中处理所有应用消息类型。即使是注解,不可能自适应实际应用的复杂性。想像一下REST没有名词(URLs)和动词(HTTP methods),仅有原始的socket。这就是为什么子协议支持和更高级别编程模型是非常必要的,这也是我们更像是要有一些注解。

     

    希望注意到“为什么”问题。现在,让我们来看一些代码。

     

    Spring WebSocket API核心接口是WebSocketHandler。下面是对一个它的实现用于处理文本消息。基类有个空方法,只是按照协议中定义的以状态1003(not acceptable)关闭会话来拒绝二进制消息。

    import org.springframework.web.socket.adapter.TextWebSocketHandlerAdapter;
     
    public class EchoHandler extends TextWebSocketHandlerAdapter {
     
      @Override
      public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        session.sendMessage(message);
      }
     
    }
    

     注意,handleTextMessage允许异常传播。这不同于JSR-356,它不允许。如果一个Exception(或Throwable)逸出方法,会话会自动以状态1011关闭(server error)。这意味着你可以选择处理异常,如果有任何有意义的事情去做;或者否则让它以默认方式处理。默认异常处理通过WebSocketHandlerDecorator机制提供。它能被扩展和/或替换。这些仅是几个我们自己的API能让我们去做什么的例子。

     

    WebSocketHandler处理器能通过WebSocketHttpRequestHandler插入到Spring MVC。

    import org.springframework.web.socket.server.support.WebSocketHttpRequestHandler;
     
    @Configuration
    public class WebConfig {
     
      @Bean
      public SimpleUrlHandlerMapping handlerMapping() {
     
        Map<String, Object> urlMap = new HashMap<String, Object>();
        urlMap.put("/echo", new WebSocketHttpRequestHandler(new EchoHandler()));
     
        SimpleUrlHandlerMapping hm = new SimpleUrlHandlerMapping();
        hm.setUrlMap(urlMap);
        return hm;
      }
     
    }
    

     

     

    SockJS备选项

    SockJS是一个浏览器JavaScript类库,其提供了WebSocket类似的编程模型和一系列特定浏览器的传输(transport),如果WebSocket在浏览器不支持或网络问题阻止它时使用。我们很高兴的宣布在这个版本中支持SockJS。SockJS的更多细节和各种传输选项,请访问sockjs-client项目页面。

     

    开启SockJS支持,简单地声明一个SockJsService,映射它到一些URL,并提供一个用于出入传入消息(incoming message)的WebSocketHandler。注意,WebSocketHandler是之上讨论的相同的处理器。换句话说,当使用SockJS,编程模型仍然相同,但底层传输可能改变为HTTP流,长轮询,或其他的东西是必要的。

    import org.springframework.web.socket.sockjs.SockJsService;
    // ...
     
    @Configuration
    public class WebConfig {
     
      @Bean
      public SimpleUrlHandlerMapping handlerMapping() {
     
        SockJsService sockJsService = new DefaultSockJsService(taskScheduler());
     
        Map<String, Object> urlMap = new HashMap<String, Object>();
        urlMap.put("/echo/**", new SockJsHttpRequestHandler(sockJsService, new EchoHandler()));
     
        SimpleUrlHandlerMapping hm = new SimpleUrlHandlerMapping();
        hm.setUrlMap(urlMap);
        return hm;
      }
     
      @Bean
      public ThreadPoolTaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setThreadNamePrefix("SockJS-");
        return taskScheduler;
      }
     
    }
    

    如果你想知道之上 的任务调度用于各种SockJS相关的任务,例如在HTTP流请求上定期发送心跳信息(以防止代理认为连接是不新鲜的),移除过期的SockJS会话等。

     

     

    最后

     

    可以在Github上找到一个示例和介绍的项目。它包括配置JSR-356端点的示例,Spring WebSocketHandler,以及SockJS服务。对于所有示例,建议使用Google Chrome网络选项卡开发工具,为了观察WebSocket和HTTP流量,观察错误等。

     

    如果您有反馈意见和建议,我们很乐意听到它!

     

    原文:http://blog.springsource.org/2013/05/22/spring-framework-4-0-m1-websocket-support/

     

    相关阅读:

    Spring Framework 4.0M1 & 3.2.3 发布了

    JSR-356 WebSocket API规范中文版

    Servlet 3.1规范

     

    展开全文
  • 我们将使用HTML5 WebSocket API向我们的RTS游戏加入多人对战支持 ...虽然这些方式确实有效,但是过的带宽占用率和网络传输延迟使它们不适合在即时的多人对战游戏中使用。  WebSocket API的出现改变了这一切

        我们将使用HTML5 WebSocket API向我们的RTS游戏加入多人对战支持

    11.1 使用Node.js操作WebSocket API

       之前浏览器与服务器之间通信的唯一方式就是通过逐个request序列,对服务器进行轮询或长轮询。虽然这些方式确实有效,但是过高的带宽占用率和网络传输延迟使它们不适合在即时的多人对战游戏中使用。

        WebSocket API的出现改变了这一切。它在单个的TCP socket中定义了双向的全双通信管道,为我们在服务器与浏览器之间提供了一种高效的、低带宽占用率通信方式。

        简而言之,我们可以在浏览器与服务器之间建立单一、持久的连接,更频繁地发送和接收数据。

    11.2 创建多人对战游戏大厅

        大厅将显示一串游戏房间的列表。玩家可以在大厅中选择进入或离开房间。如果两个玩家都进入了同一个房间,多人对战游戏就会自动开始,两个玩家将在游戏中进行对决。

         multiplayer.js

         定义多人对战大厅界面

         游戏房间列表

         进入和离开房间

    11.3 启动多人对战游戏

         当两个玩家都进入同一个游戏房间中时,多人对战游戏模式就会启动。我们需要告诉客户端来加载同一个关卡。一旦两个浏览器都完成了关卡的加载,那就开始游戏。

         server.js



    展开全文
  • 要想做IM聊天app,就不得不理解...这一类聊天app的特点是低延迟即时。即时是这里面要求最高的,如果有一个紧急的事情,通过IM软件通知你,假设网络环境良好的情况下,这条message还无法立即送达到你的客户端上,...
  •  聊天特点:低延迟及时。  (2)弹幕  (3)多玩家游戏  (4)协同编辑  (5)股票基金实时报价  (6)体育实况更新  (7)视频会议/聊天  (8)基于位置应用  (9)在线教育  (10)智能...
  • html5 + websocket_rtsp_proxy 实现视频流直播

    万次阅读 热门讨论 2018-02-15 00:27:09
    1 方案介绍web页面上播放RTSP视频流,通常可以采用“jwplayer +ffmpeg+red5”的方案,由于这种方案首先将RTSP协议对应的视频流转码成RTMP协议的视频流,因此延迟通常会很。为了降低直播的延迟,最好直接能直接在...
  • 港股数据分BMP基础数据和卓越高级数据,基础数据港交所规定需展示延迟15分钟以上数据,并且也需要找一家行情供应商对接并且需要向港交所按月支付使用授权费,接口是API主动请求的。港股BMP是延迟15分钟行情,高级...
  • 使用基于TCP或Websocket的MQTT发布/订阅。 弹性,可用性和分区容忍度(以CAP表示为AP)。 能够在单个代理上每秒处理3+百万条消息。 支持具有历史记录和消息级别到期的消息存储。 提供具有权限的安全通道密钥...
  • 我们的目标是以容量,低延迟的方式支持HTTP,HTTP / 2和WebSocket之类的Web协议,以提供最佳性能,同时保持易用性以及与多年Servlet开发的兼容性。 Jetty是一种现代的完全异步的Web服务器,作为一种面向组件的...
  • Bitfinex Websocket(v2)API的非官方Java实现 该项目为提供了Java客户端库。 实现了公共和私人渠道(蜡烛,滴答,执行的交易,(原始)订单,订单和钱包)。 与其他实现相反,该项目使用Bitfinex的WSS( Web套接...
  • websockets 在此博客文章中,我们将讨论WebSockets以及如何将其用于创建性能的多用户Web应用程序。 我们将介绍: 什么是WebSocket以及它们与HTTP连接的区别 为什么WebSocket对于要求苛刻的应用程序是必需的 ...
  • 在此博客文章中,我们将讨论WebSockets以及如何将其用于创建性能的多用户Web应用程序。 我们将介绍: 什么是WebSocket以及它们与HTTP连接的区别 为什么WebSockets对于要求苛刻的应用程序是必需的 如何创建...
  • 作为目前流行的物联网通信技术,LoRa在环境监测领域已有较成熟的解决方案,但其应用于对实时性要求的场景时,例如实验室安全监测,相应方案不能展现出较好的性能。以目前成熟的LoRa解决方案为基础,在其架构的应用...
  • 使用异步I / O的超低延迟,多线程Stratum实现 自适应共享难度(“ vardiff”) 使用本机代码进行PoW验证(散列)以实现最佳性能 清除DDoS /洪水引发的僵尸工作者的会话管理 交付过程 禁止系统 端口4000上的实时统计...
  • 13 自定制property实现延迟计算功能 14 property补充 15 元类介绍 16 自定义元类 17 函数复习 18 文件操作复习 第29章 01 上节课复习 02 什么是异常处理及异常处理的两种方式对比 03 多分支与万能异常 04 异常处理...
  • 支持WebSocket / Protobuf 支持计划任务,延迟任务 支持自定义协议 网络模型 gev仅使用一些goroutine,其中一个侦听连接,而另一个(工作协程)处理已连接客户端的读取和写入事件。 工作协程的数量是可配置的,默认...
  • javascript 高级程序设计 第二版 中文版 含源代码

    千次下载 热门讨论 2011-03-25 09:50:23
    2.1.2 延迟脚本 11 2.1.3 在xhtml中的用法 12 2.1.4 不推荐使用的语法 13 2.1.5 嵌入代码与外部文件 13 2.2 文档模式 14 2.3 [noscript]元素 15 2.4 小结 16 第3章 基本概念 17 3.1 语法 17 .3.1.1 区分大...
  • 测试平台为 win10,测试效果延迟较大,在八到十秒左右,对于延迟要求不的可以尝试使用。 环境准备: node 安装 ffmpeg 多媒体处理工具,官网链接 谷歌浏览器 后端代码: const WebSocket = require("ws"); ...
  • 前端如何实现即时通讯?

    千次阅读 2019-11-24 16:43:04
    缺点:延迟,非常消耗请求资源,影响性能 Websocket 使用指南请看WebSocket 教程 Websocket是一个全新的、独立的协议,基于TCP协议,与http协议兼容、却不会融入http协议,仅仅作为html5的一部分,其作...
  • 19.4.8 程序集的延迟签名 19.4.9 引用 19.4.10 本机映像生成器 19.5 配置.NET应用程序 19.5.1 配置类别 19.5.2 绑定程序集 19.6 版本问题 19.6.1 版本号 19.6.2 通过编程方式获取版本 19.6.3 绑定到程序集版本 ...
  • 19.4.8 程序集的延迟签名 19.4.9 引用 19.4.10 本机映像生成器 19.5 配置.NET应用程序 19.5.1 配置类别 19.5.2 绑定程序集 19.6 版本问题 19.6.1 版本号 19.6.2 通过编程方式获取版本 19.6.3 绑定到程序集版本 ...
  • 19.4.8 程序集的延迟签名 19.4.9 引用 19.4.10 本机映像生成器 19.5 配置.NET应用程序 19.5.1 配置类别 19.5.2 绑定程序集 19.6 版本问题 19.6.1 版本号 19.6.2 通过编程方式获取版本 19.6.3 绑定到程序集版本 ...
  • java流媒体服务EasyMedia

    2021-02-20 18:11:05
    移除原有spring websocket,采用性能的netty作为http、ws服务,新增关闭逻辑,由于替换netty,本地文件暂不支持。 流媒体服务不需要依赖nginx等第三方,自身提供推流服务。 测试延迟在2-3秒左右 成品下载 链接:...
  • html5_rtsp_player-master

    2019-03-30 13:34:52
    html5 + websocket_rtsp_proxy 实现视频流直播web页面上播放RTSP视频流,通常可以采用“jwplayer +ffmpeg+red5”的方案,由于这种方案首先将RTSP协议对应的视频流转码成RTMP协议的视频流,因此延迟通常会很。...
  • zlmediakitwithdepend-源码

    2021-02-11 00:14:33
    支持画面秒开,极低延迟( )。 提供完善的标准 ,可以作SDK用,或供其他语言调用。 提供完整的服务器,可以免开发直接部署为商用服务器。 提供完善的以及 ,支持丰富的业务逻辑。 打通了视频监控协
  • 云真机实时操作,对延迟的要求比远程视频对话的要求更(100ms以内)。在无线网络下,如何更实时、更可靠的传输视频流就成了一个挑战。通过websocket、RTMP、UDP的比较,最后选择了可靠的UDP协议KCP来进行实时音...
  • 实时web技术

    2015-06-06 22:14:51
    1.客户端轮询,缺点:有延迟、对服务器造成压力2.comet(永久帧、xhr流、htmlfile、长轮询),缺点:性能问题无法解决,向服务器发送的每个连接都带有完整的http头信息,延迟3.浏览器插件和jaava,基于tcp直接和...

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

websocket延迟高