即时通信常见的几种方式,此处只做学习记录

1. 轮询
利用ajax每隔一段时间就请求一次服务器,服务器返回数据。
优点:最简单的解决方案
缺点:对服务器压力很大,浪费带宽
2. 长轮询
利用ajax请求服务器,当有数据变化的时候,立刻返回,当没有数据的时候,保持这个连接直到
断开,当断开的时候再次发出请求,一直循环
优点:最简单的解决方案,减少了对服务器的请求次数
缺点:对服务器压力大,同样浪费带宽(在保持连接的时候(hold),会消耗资源)
3. 长连接
在页面里面嵌套一个iframe,设置src为一个长连接的请求,服务器就能不断向客户端输入数据
优点:消息及时送达,没有多余的请求
缺点:维护一个长连接会增加开销
4. flash socket
利用Socket类的接口与服务端的socket接口进行通信
优点:真正的即时通信
缺点:必须安装flash插件,有防火墙的限制
5. websocket
Html5中,加强了web的功能,提供了websocket技术,它是一种应用层的协议,提供了浏览器和服务器之间的原生全双工跨域通信(ws),很强大。当new websocket的时候,第一次会进行一次握手,当握手成功后,浏览器和服务器之间就建立了一个tcp连接,接下来服务器和客户端就能进行双向通信了(走的是ws协议)

时间: 2024-08-26 04:20:22

即时通信常见的几种方式,此处只做学习记录的相关文章

java基础知识回顾之java Thread类学习(三)--java线程实现常见的两种方式实现好处:

总结:实现Runnable接口比继承Thread类更有优势: 1.因为java只能单继承,实现Runnable接口可以避免单继承的局限性 2.继承Thread类,多个线程不能处理或者共享同一个资源,但是实现Runnable接口可以处理同一个资源. 下面我们做个测试:验证下.车站的售票系统售票的例子,车站的各个售票口相当于各个线程,我们先使用第一种方法几继承Thread类的方式实现: 代码如下: package com.lp.ecjtu.Thread; /** * * @author Admini

不同vlan间的通信简单配置(三种方式)

不同vlan间的通信简单配置 1.单臂路由(图) 环境:一台路由器,一台二层交换机,两台pc机 二层交换机的配置一般模式:Switch>输入enable进入特权模式:Switch>enable输入configure terminal进入全局配置模式:Switch#configure terminal Enter configuration commands, one per line.  End with CNTL/Z.创建vlan 10 和 vlan 20:Switch(config)#vl

EditText限制输入的几种方式及只显示中文汉字的做法

最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式:  设置EditText的inputType属性,可以通过xml或者java文件来设置.假如我要设置为显示密码的形式,可以像下面这样设置: 在xml中,   android:inputType="textPassword" 在java文件中,可以用 ev.setInputType(InputType.TYPE_TEXT_VARIATION_P

Vue 组件间通信有哪几种方式?

父子通信 (1)父组件向子组件传值props <button-counter :title="send"></button-counter> Vue.component('button-counter', { props: ['title'], data: function() { return { count: 0 } }, 子向父通信 (2)子组件向父组件传值  $emit('enlarge-text',10)   on 子组件通过自定义事件向父组件传递数据

java连接数据库常见的3种方式

分别为代码中配置  properties配置  C3P0 xml文件配置

页面之间传值,常见的几种方式。

ViewController页面传到TwoViewController页面name的值:两个页面都拥有一个字符串对象,跳转之前,把对象传过去. #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (nonatomic,copy)NSString *name; @end - (void)viewDidLoad { [super viewDidLoad]; self.name = @"

Java字符串反转常见的几种方式?

(1)通过StringBuilder的reverse()方法,速度最快: 1 public class StringReverse { 2 public static void main(String[] args) { 3 String str="hello"; 4 System.out.println(reverse(str)); 5 6 } 7 public static StringBuilder reverse(String str){ 8 return new String

Oracle变量定义的三种方式(define,variable,declare)学习笔记

1.define(即host变量) Host变量主要作用是起到一个替代变量的作用,是主机环境可以和oracle进行交互的一个媒介. 通过define定义host变量的时候必须指定变量名和变量的值,如果变量名已经存在于host变量中,则自动覆盖,这个值不可以指定类型,一律按char存储. DEFINE 变量只在当前session环境中有效. (1).语法: define variable_name = value (2).声明和初始化DEFINE变量 //声明define变量的时候必须同时初始化赋

js对象实例化的常见三种方式

三种常见模式:工厂模式,构造函数模式,原型模式 <span style="font-size:18px;"><!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Object</title> </head> <body> <h1>创建对象常见的