Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用

1、首先看下最简单的SSE:

只用支持SSE的浏览器(大部分)即可,浏览器内置EventSource对象,该对象默认隔三秒刷新一下response的数据。

HTML代码(取自w3cschool):

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>获取服务端更新数据</h1>
<div id="result"></div>

<script>
if(typeof(EventSource)!=="undefined")
  {var source=new EventSource("socket");//参数为请求链接
  source.onmessage=function(event)
    {
        document.getElementById("result").innerHTML+=event.data + "<br>";
    };
  }
else
  {
  document.getElementById("result").innerHTML="抱歉,你的浏览器不支持 server-sent 事件...";
  }
</script>

</body>
</html>

Tomcat服务端代码:

public class TestServlet extends HttpServlet{protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
        res.setHeader("Content-Type", "text/event-stream;charset=UTF-8"); //也可以直接设置Content-Type,但是编码一定要一致
        PrintWriter p = res.getWriter();
        while(true) {
            Thread.sleep(1000);
            p.print("data:");//一定要以data:开头,否则取不到数据
            p.println("abc");
            p.println();//一定要跟空行,否则无数据,不触发onmessage。
            p.flush();
        }
    }

}

这样就可以了,具体的可以查看EventSource详细内容

时间: 2024-11-07 16:06:47

Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用的相关文章

Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别

在下面的示例中,客户端指的是浏览器,服务器指的是网站服务器主机. 为了更好的理解这些知识点,你应该简单了解典型的http网站是如何工作的. 普通的http: 客户端从服务器端请求网页 服务器作出相应的反应 服务器返回相应到客户端 AJAX Polling: 客户端使用普通的http方式向服务器端请求网页 客户端执行网页中的JavaScript轮询脚本,定期循环的向服务器发送请求(例如每5秒发送一次请求),获取信息 服务器对每次请求作出响应,并返回相应信息,就像正常的http请求一样 AJAX L

Ubuntu Server 与 Ubuntu Desktop之间的区别

服务器版本的内核时钟频率由桌面的100hz转为1khz,这一点是为某些服务器应用提供更好的性能和吞吐量. 除此之外,服务器内核支持SMP"对称多处理"(Symmetrical Multi-Processing)技术和NUMA. 集成的LAMP也是Ubuntu Server的一大特色,省去了很多配置的麻烦. 支持“big iron”(大型服务器):那是一种能够让软件运行得更容易和更简单的硬件解决方案. LTS支持:长期服务.质量保证.本地化.认证. 出去以上的特征,你可以把Ubuntu

简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别

原文:简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别 这次简单说说游标的分类. 先看看通常游标的语法 DECLARE cursor_name CURSOR [ LOCAL :局部游标,仅在当前会话有效 | GLOBAL : 全局游标,全局有效,可以 ] [ FORWARD_ONLY :只能向前游标,读取游标时只能使用 Next 谓词 | SCROLL :滚动游标,FIRST.LAST.PRIOR.NEXT.RELATIVE.ABSOLUTE 都可以使用 ] [

SQL Server 中CAST和Convert的区别

在 SQL Server 中Cast和Convert都是将表达式由一种数据类型转换为另一种数据类型.由于SQL Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了.CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性.CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些.不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需

Server.UrlEncode、HttpUtility.UrlDecode的区别

在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测试:string file="文件上(传)篇.doc";string Server_UrlEncode=Server.UrlEncode(file);string Server_UrlDecode=Server.UrlDecode(Server_UrlEncode);string HttpUtility_UrlEncode=System.Web.HttpUtility.UrlEncode(file);string HttpU

使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的简单事务复制示例. 2011 年 8 月发布 大多数关注数据复制的 Oracle 技术专家都熟悉 Oracle Streams.在 2009 年之前,Streams 一直是推荐使用的最流行的 Oracle 数据分发技术. 2009 年 7 月,Oracle 收购了 GoldenGate 这一数据库复

SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

原文:SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVAR

Windows server 2012 域控制器之间角色转移及清理域控方法,实现辅助域控提升为主域控

本章博文讲述Windows server 2012 域控制器之间角色转移及删除域控方法 .针对不同的应用场景,对操作方法进行了归纳与总结   . 下面分2种场景做介绍  : 场景1:主域控制器与辅助域控制器运行正常,相互间可以实现AD复制功能.需要把辅助域控制器提升为主域控制器 ,把主域控制器降级为普通成员服务器:这种场景一般应用到原主域控制器进行系统升级(先转移域角色,再降级,再安装或升级高版本系统,再次转移角色恢复到主域控制器角色)或使用配置更高的服务器替代原主域控制器起到主域控制的作用(使

SharePoint Server和Office 365之间的混合模式集成概述

正如您可能已经知道的那样,云中的Microsoft Office 365和SharePoint Server 2013/2016内部部署可以通过多种方式协同工作.这些通常被称为混合模式,因为它们将功能集成到SharePoint Online和SharePoint内部部署中. 以下Microsoft提供了下对照表,SharePoint Server和Office 365之间集成的快速预览. 详细参考官方链接: https://technet.microsoft.com/en-us/library/