Socket与WebScoket
socket
英文socket的意思是插座,网络中的Socket是一个抽象的接口,可以理解为网络中连接的两端。通常被叫做套接字接口,其意义在对传输层进行封装屏蔽了传输层的复杂性。它并不是一个协议,是为了大家更方便的使用传输层协议产生的一个抽象层。大部分的主流编程语言都提供socket函数.
套接字:TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。
(套接字用(IP地址:端口号)表示。
WebSocket
WebSocket就是其中一种,是为了创建一种双向通信(全双工)的协议,来作为HTTP协议的一个替代者,以解决基于http上的长轮询等技术解决不了(或者解决的不那么优美)的问题。作为HTTP的替代者,它和HTTP(或者HTTP的长连接)的有一定的联系和区别!
在HTTP中,一个Request对应着一个Response,早期的HTTP1.0每次的HTTP连接都需要打开一个TCP连接,在一个Request后,服务器产生一个应答Request,这次HTTP连接就结束了,同时关闭了TCP连接,重复的建立TCP连接是一种资源浪费,主动关闭TCP连接后还会出现time_wait状态,继续占用资源 一段时间(可以看上一篇文章TCP连接和 time_wait、close_waite)
这种情况在HTTP1.1中进行了一定的改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response,可以减少建立和拆除TCP连接的次数,因此同时减少了time_wait状态的连接,但是,如果设置了keep-alive的超时时间比如nginx中是keepalive_timeout,一段时间没有通信超时后服务器主动关闭连接也是可能造成服务器出现time_wait状态的,如果不设置超时时间也会造成一定的资源浪费(占用连接却不发送数据),所以怎么设置这个超时时间也很重要。
本质上HTTP1.1中虽然可以保持持久的连接,但是它依然不是全双工的,因为服务端是不可以主动给客户端发送消息的,ajax轮询的方式虽然可以达到WebSocket全双工的类似效果,但是会造成大量的资源浪费。
Socket与WebScoket的更多相关文章
- socket 和 webscoket 的区别
Socket和WebSocket的来源 Socket Socket大致是指在端到端的一个连接中,这两个端叫做Socket.对于IT从业者来说,它往往指的是TCP/IP网络环境中的两个连接端,大多数的A ...
- Socket 与 WebSocket
本文转载自:http://zengrong.net/post/2199.htm 1. 概述 选择了 WebSocket 技术之后,不可避免的,我要将它和其他协议以及技术做一下比较.最常见的,就是需要比 ...
- WebSocket(二)-WebSocket、Socket、TCP、HTTP区别
原文地址:Socket 与 WebSocket 1. 概述 WebSocket 是为了满足基于 Web 的日益增长的实时通信需求而产生的.在传统的 Web 中,要实现实时通信,通用的方式是采用 HTT ...
- WebSocket 和socket 的区别
去年光棍节的时候,我写过一篇 quick-cocos2d-x 中的 socket 技术选择:LuaSocket 和 WebSocket .这篇文章介绍了我为何决定在项目中使用 LuaSocket . ...
- (转) websocket 和 socket 剖析
Socket 与 WebSocket 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文 ...
- 简单又好用的聊天室技术——WebSocket
现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器.这种传统的模式带来很 ...
- html5 的 webScoket 和 C# 建立Socket连接
最近使用的web项目中,需要服务器直接触发前端显示效果. 所以研究了一下websocket: 名词解释: WebSocketWebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样 ...
- Socket.io在线聊天室
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
- 基于Express+Socket.io+MongoDB的即时聊天系统的设计与实现
记得从高中上课时经常偷偷的和同学们使用qq进行聊天,那时候经常需要进行下载qq,但是当时又没有那么多的流量进行下载,这就是一个很尴尬的事情了,当时就多想要有一个可以进行线上聊天的网站呀,不用每次痛苦的 ...
随机推荐
- http-server安装及运行
vue项目打包后会生成一个dist目录,我们想要直接运行dist目录...除了复制静态文件到服务器nginx目录下,然后启动nginx来启动项目, 另外一个办法就是安装http-server 直接启动 ...
- 神奇的选择器 :focus-within
CSS 的伪类选择器和伪元素选择器,让 CSS 有了更为强大的功能. 伪类大家听的多了,伪元素可能听到的不是那么频繁,其实 CSS 对这两个是有区分的. 有个错误有必要每次讲到伪类都提一下,有时你会发 ...
- [Swift-2019力扣杯春季决赛]1. 有序数组中的缺失元素
给出一个有序数组 A,数组中的每个数字都是 独一无二的,找出从数组最左边开始的第 K 个缺失数字. 示例 1: 输入:A = [4,7,9,10], K = 1 输出:5 解释: 第一个缺失数字为 5 ...
- AJAX快速上手和基本核心
一.快速上手AJAX 使用ajax的过程可以类比平常我们访问网页过程 1.创建一个XMLHttpRequest类型的对象------相当于打开了浏览器 var xhr = new XMLHttpReq ...
- TCP三次握手和四次挥手的全过程
三次握手: 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认:第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个 ...
- javaScript设计模式之面向对象编程(object-oriented programming,OOP)(二)
接上一篇 面向对象编程的理解? 答:面向对象编程,就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)与动作(方法).这个对象我们称之为类.面向对象编程思想其中一个特点就是封装,就是把你需 ...
- qml demo分析(text-字体展示)
上一篇文章分析了一个小游戏,使用qml编写界面+js进行复杂逻辑控制,算是一个比较完整的qml示例代码了,今天就不那么继续变态啦,来看一个简单的字体示例程序吧,该示例代码比较简单,主要是展示了几个简单 ...
- 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...
- 微信小程序开发02-小程序基本介绍
前言 前面我们研究了下微信小程序的执行流程,因为拿不到源码,只能算我们的猜想,我们需要更加了解小程序还需要做具体的项目,于是我们将原来那套还算复杂的业务拿出来: [组件化开发]前端进阶篇之如何编写可维 ...
- Cayley图数据库的可视化(Visualize)
引入 在文章Cayley图数据库的简介及使用中,我们已经了解了Cayley图数据库的安装.数据导入以及进行查询等. Cayley图数据库是Google开发的开源图数据库,虽然功能还没有Neo4 ...