websocket协议

websocket

[亡魂溺海] 提交于 2020-04-06 10:57:09
目录 1.1 websocket原理 1.2 websocket使用 1.3 websocket心跳包机制 1.1 websocket原理 1、什么是webSocket?   1. webSocket是一种在单个TCP连接上进行全双工通信的协议         2. 客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。   3. 浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输    远古时期解决方案就是轮训: 客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动(浪费流量和资源) 2、webSocket应用场景?   1. 聊天软件: 最著名的就是微信,QQ,这一类社交聊天的app   2. 弹幕: 各种直播的弹幕窗口   3. 在线教育: 可以视频聊天、即时聊天以及其与别人合作一起在网上讨论问题… 3、图解http与webSocket比较   1. 浏览器通过 JavaScript 向服务端发出建立 WebSocket 连接的请求   2. 在 WebSocket 连接建立成功后,客户端和服务端就可以通过 TCP连接传输数据。   3. 因为WebSocket 连接本质上是 TCP 连接,不需要每次传输都带上重复的头部数据    4、websocket原理   1.

python实用库

安稳与你 提交于 2020-04-03 11:48:06
参考: https://github.com/programthink/opensource/blob/master/libs/python.wiki#35_ Python 开源库及示例代码 Table of Contents 说明 1 算法 1.1 字符串 1.1.1 正则表达式 1.1.2 字符集 1.1.3 (其它) 1.2 编码 & 解码 1.2.1 base64 1.2.2 UUencode 1.2.3 BinHex 1.3 数学类 1.4 容器 2 跨语言编程 2.1 整合 C & C++ 2.2 整合 JVM 平台 2.3 整合 dotNet 平台 2.4 整合 Go 2.5 整合 Objective-C 3 操作系统 3.1 文件和目录操作 3.2 线程 3.3 进程 3.4 本地进程间通信(IPC) 3.5 操作硬件 3.6 获取系统信息 3.7 Linux & Unix 系统相关 3.8 Windows 系统相关 3.9 程序打包 4 Web 4.1 HTTP Client 4.2 HTTP Server 4.3 Web 开发框架 4.4 Web前端 & JS整合 4.5 浏览器整合 4.6 WebSocket 4.7 (其它) 5 网络 5.1 链路层 & 网络层 5.2 传输层 5.3 标准的应用层 5.3.1 综合性的库 5.3.2 HTTP 5.3.3

WebSocket和WebRtc的一些心得

北城余情 提交于 2020-03-28 04:29:33
一、基础 1、HTTP协议是无状态的,服务器只会响应来自客户端的请求,但是它与客户端之间不具备持续连接;且只能从客户端主动请求服务端,服务端不能主动通知客户端。 对于实时通信系统(聊天室或监控系统)这样显然是不合理的。传统的方法有:长轮询(客户端每隔很短的时间,都对服务器发出请求,当时间足够小就能实现实时的效果)、长连接(客户端只请求一次,但是服务器会将连接保持,当有数据时就返回结果给客户端)。这两种方式,都对客户端和服务器都造成了大量的性能浪费,于是WebSocket应运而生。WebSocket协议能够让浏览器和服务器全双工实时通信,互相的,服务器也能主动通知客户端。 2、 WebSocket的原理非常的简单:利用HTTP请求产生握手,HTTP头部中含有WebSocket协议的请求,所以握手之后,二者转用TCP协议进行交流。 Socket.IO是业界良心,新手福音。它屏蔽了所有底层细节,让顶层调用非常简单。并且还为不支持WebSocket协议的浏览器,提供了长轮询的透明模拟机制。 二、实现 1、socket.emit(action,arg1,arg2); 表示发送了一个action命令,还有两个数据,在另一端接收时,可以这么写: socket.on('action',function(arg1,arg2){...}); 2、io.sockets.emit 信息传输对象为所有

Django websocket 长连接使用

半世苍凉 提交于 2020-03-10 11:15:24
下载 pip install dwebsocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输 现在,很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。 而比较新的技术去做轮询的效果是Comet。这种技术虽然可以双向通信,但依然需要反复发出请求。而且在Comet中,普遍采用的长链接,也会消耗服务器资源。 在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯 1. http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息。   http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response

WebSocket、Socket、TCP、HTTP区别

会有一股神秘感。 提交于 2020-03-08 14:33:28
1. 概述 WebSocket 是为了满足基于 Web 的日益增长的实时通信需求而产生的。在传统的 Web 中,要实现实时通信,通用的方式是采用 HTTP 协议不断发送请求。但这种方式即浪费带宽(HTTP HEAD 是比较大的),又消耗服务器 CPU 占用(没有信息也要接受请求)。(下图来自 WebSocket.org ) 而是用 WebSocket 技术,则会大幅降低上面提到的消耗:(下图来自 websocket.org ) 关于更详细的描述,尹立的这篇文章讲得非常好: WebSocket(2)–为什么引入WebSocket协议 。 那么,WebSocket 到底与 HTTP 协议到底是一个什么样的关系呢?它和 Socket 又有什么联系?这就要讲到 OSI 模型和 TCP/IP 协议族。 2. OSI 模型与 TCP/IP 以下是 维基百科 中关于OSI 模型的说明: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,ISO/IEC 7498-1),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织(ISO)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。 而 TCP/IP 协议可以看做是对 OSI 模型的一种简化(以下内容来自 维基百科 ):

前端基础-HTTP,HTML,浏览器

徘徊边缘 提交于 2020-03-05 01:07:31
前端基础 一、HTTP,HTML,浏览器 1、说一下 http 和 https https 的 SSL 加密是在传输层实现的。 (1)http 和 https 的基本概念: http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器 端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输协议,它可以 使浏览器更加高效,使网络传输减少。 HTTP 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。 它于 1990 年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在 WWW 中使用的是 HTTP/1、0 的第六版,HTTP/1、1 的规范化工作正在进行之中,而且 HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP 协议工作于客户端-服务端架构为上。浏览器作为 HTTP 客户端通过 URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送 响应信息。 https: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

关于直播的问题

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-11 20:54:19
问题描述: 想用html5+MSE+Websocket+PHP做视频直播的,搜索一番资料之后MSE这块搞明白了,关于服务端音视频流处理这块搞不懂。有的说用nginx+rtmp做推流服务器,还说用ffmpeg+rtmp处理解编码等等。我想问的是不用rtmp协议,直接用http协议+MSE+Websocket+PHP能实现么,给个大概思路。 来源: CSDN 作者: qq_35162266 链接: https://blog.csdn.net/qq_35162266/article/details/104267243

c++ WebSocket Secure服务器(wss服务器)

时光怂恿深爱的人放手 提交于 2020-01-21 05:41:39
做h5游戏,之前是自己写的epoll网络通信,所以开始项目的时候都没有多想就直接自己写了一个websocket网络,而不是使用第三方的ws库。一直用都没有出现问题,但是项目上线前一周前端对接sdk的时候说平台只支持https不支持http,所以后端必须的使用wss通信,惊闻这个消息的时候已经周四了,离上线还有三天时间。想着如果用完全不了解的第三方库还不知道会出现什么问题,而且第三方库引入项目估计网络层全部都是修改,动静太大,时间上来不及,考虑之后还是决定自己写,自己用c++和openssl只用了一天时间就实现了,最后拿到线上也没有出现任何问题。下面简单介绍下wss的相关处理方式。wss其实就是在ws的基础上增加了一层ssl封装,所以听起来麻烦,真正实现其实不难。 首先分配和初始化服务器上下文句柄,代码如下: bool WSSSocketThread::Init() { SSL_library_init();//初始化库 SSL_load_error_strings();//加载错误信息 m_ctx = SSL_CTX_new(SSLv23_method());//SSLv23_server_method or SSLv23_client_method if (nullptr == m_ctx) { WRITE_ERROR_LOG("SSL_CTX_new error");

webSocket协议与Socket的区别

人盡茶涼 提交于 2020-01-15 07:39:30
WebSocket介绍与原理 WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。 ——百度百科 目的:即时通讯,替代轮询 网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的技术能力通常是采用轮询、Comet技术解决。 HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。当需要即时通讯时,通过轮询在特定的时间间隔(如1秒),由浏览器向服务器发送Request请求,然后将最新的数据返回给浏览器。这样的方法最明显的缺点就是需要不断的发送请求,而且通常HTTP request的Header是非常长的,为了传输一个很小的数据 需要付出巨大的代价,是很不合算的,占用了很多的宽带。 缺点:会导致过多不必要的请求,浪费流量和服务器资源,每一次请求、应答,都浪费了一定流量在相同的头部信息上 然而WebSocket的出现可以弥补这一缺点。在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。 原理 WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。 连接过程 —— 握手过程 1. 浏览器

goweb-web服务

吃可爱长大的小学妹 提交于 2020-01-14 18:50:37
Web服务 Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的接口开放出来,就如同你调用一个本地函数并返回一个值。 Web服务背后的关键在于平台的无关性,你可以运行你的服务在Linux系统,可以与其他Windows的asp.net程序交互,同样的,也可以通过同一个接口和运行在FreeBSD上面的JSP无障碍地通信。 目前主流的有如下几种Web服务:REST、SOAP。 Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程。你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和Web服务器进行通信的呢?当你用QQ聊天时,QQ进程怎么和服务器或者是你的好友所在的QQ进程进行通信的呢?当你打开PPstream观看视频时,PPstream进程如何与视频服务器进行通信的呢? 如此种种,都是靠Socket来进行通信的,以一斑窥全豹,可见Socket编程在现代编程中占据了多么重要的地位,这一节我们将介绍Go语言中如何进行Socket编程。 什么是Socket? Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用