即时通讯

前端如何实现即时通讯

匿名 (未验证) 提交于 2019-12-03 00:11:01
1.短轮询 短轮询的原理很简单,每隔一段时间客户端就发出一个请求,去获取服务器最新的数据,一定程度上模拟实现了即时通讯。 优点:兼容性强,实现非常简单 缺点:延迟性高,非常消耗请求资源,影响性能 2.comet comet有两种主要实现手段,一种是基于 AJAX 的长轮询(long-polling)方式,另一种是基于 Iframe 及 htmlfile 的流(streaming)方式,通常被叫做长连接。 具体两种手段的操作方法请移步Comet技术详解:基于HTTP长连接的Web端实时通信技术 长轮询优缺点: 优点:兼容性好,资源浪费较小 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护 长连接优缺点: 优点:兼容性好,消息即时到达,不发无用请求 缺点:服务器维护长连接消耗资源 3.SSE 使用指南请看Server-Sent Events 教程 SSE(Server-Sent Event,服务端推送事件)是一种允许服务端向客户端推送新数据的HTML5技术 优点:基于HTTP而生,因此不需要太多改造就能使用,使用方便,而websocket非常复杂,必须借助成熟的库或框架 缺点:基于文本传输效率没有websocket高,不是严格的双向通信,客户端向服务端发送请求无法复用之前的连接,需要重新发出独立的请求 4.Websocket Websocket是一个全新的

即时通讯(二)

匿名 (未验证) 提交于 2019-12-02 23:47:01
Socket.IO     Socket.IO本是一个面向实时web应用的JavaScript库,现在已经成为拥有众多语言的Web即时通讯应用框架。     Socket.IO 主要使用WebSocket协议。但是如果需要的话,Socket.io可以回退到几种其它方法,例如Adobe Flash Sockets,JSONP拉取,或是传统的AJAX拉取,并且在同时提供完全相 Socket.IO 不等价于 WebSocket,WebSocket只是Socket.IO实现即时通讯的其中一种技术依赖,而且Socket.IO还在实现WebSocket协议时做了一些调整。 我是一个python 工作者,那实际在python中怎么使用呢? 首先要安装 pip install python-socketio 创建服务器                 import socketio # create a Socket.IO servers sio = socketio.Server() # 打包成WSGI应用,可以使用WSGI服务器托管运行 app = socketio.WSGIApp(sio) # Flask Django       创建好的app对象后,使用uWSGI服务器运行此对象。   from wsgi import app # a Flask, Django, etc.

即时通讯(一)

匿名 (未验证) 提交于 2019-12-02 23:47:01
传统的推荐实现 HTTP/1.x不支持服务器主动推送,只能在客户端发起请求后做出响应。(HTTP/2支持服务器主动推送,但是HTTP/2还未全面实施)                               长轮询 长轮询是打开一个连接以后保持,等待服务器推送来的数据再关闭的方式,如果没有数据就不会返回,一致处于等待状态                         Websocket  HTML定义了web socket协议,能够更好的的节省服务器资源和带宽,并且能够更好地进行如通讯。  WebSocket 是一种在单个TCP连接上进行全双工通信的协议。在WebSocket API 中,浏览器和服务器只需要完成一次握手(不是指建立TCP连接的那个三次握手,是指在建立TCP连接后传输一次握手数据),两者之间就直接可以创建持久化的链接,并进行双向数据传输。                          优点      较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。 更强的实时性。由于协议是全双工的

初窥IM通信协议

匿名 (未验证) 提交于 2019-12-02 22:56:40
QQ就是使用UDP协议进行发送和接收消息的。当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你看谁在线时,你的OICQ又一次作为Client从QQ Server上读取在线网友名单。当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传 送。如果你和对方的连接不是很稳定,QQ服务器将为你们的聊天内容进行中转。其他的即时通信软件原理与此大同小异。 首先,用户A输入自己的用户名和密码登录即时通讯服务器,服务器通过读取用户数据库来验证用户身份,如果用户名、密码都正确,就登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号, 然后返回用户A登录成功的标志,此时用户A在 IM系统中的状态为在线(Online Presence)。 其次,根据用户A存储在IM服务器上的好友列表 (Buddy List),服务器将用户A在线的相关信息发送到也同时在线的即时通讯好友的PC机,这些信息包括在线状态、IP地址、 IM客户端使用的TCP端口(Port)号等,即时通讯好友PC机上的即时通讯软件收到此信息后将在PC桌面上弹出一个小窗口予以提示。 第三步,即时通讯服务器把用户A存储在服务器上的好友列

IM即时通讯软件分类介绍

瘦欲@ 提交于 2019-12-02 14:43:17
即时通信,简称IM(InstantMessaging),是在网络技术飞速发展过程中个人电脑上涌现的一项非常流行的通信技术。它是继电子邮件、Web技术之后的第三大互联网应用。按照IM即时通讯产品的主要使用人群的不同,IM即时通讯产品大致上可分为两大类型,分别是个人级即时通讯产品和企业级即时通讯产品。 (一)个人级即时通讯软件 个人级的即时通讯产品,可称作个人IM,其典型代表产品如微信和QQ,主要是以个人用户使用为主的,用户在使用时通常也都是免费的。企业在开发这类型产品的各项功能时,一般会要求注册用户填写必要的昵称、性别、年龄、地址、职业、受教育状况等基础个人信息,企业要求用户填写这些个人资料的目的也不是为了盈利,而是为了尽可能的方便不同的用户进行聊天和沟通。 (二)企业即时通讯软件 企业级的即时通讯产品,可称作企业IM,主要是以企业用户使用为主的,具体可分为以下三种不同的类型: 1、局域网软件型企业即时通讯产品 局域网软件型企业即时通讯产品,就比如企达Longchat,是需要在自己公司服务器上部署的,所有的信息与数据都保存在自己公司服务器,所有安全性更高,一般像政府、军队以及大中型企业集团会比较常用。 2、互联网平台型企业即时通讯 互联网平台型企业即时通讯产品,不需要在自己公司部署服务器,下载客户端即可使用,其实和QQ是差不多的,所有的数据都是在云服务器的,数据的安全性不高

即时通讯--socketio

风流意气都作罢 提交于 2019-11-29 03:27:10
1.即时通讯介绍 即时通讯是基于TCP长连接, 建立连接之后, 客户端/服务器可以无限次随时向对端发送数据, 实现服务器数据发送的即时性 http是短连接, 设计的目的是减少服务器的压力 http伪即时通讯 轮训 emmet 长轮训 long pulling 使用场景 聊天功能 在线即时推送 如下单后立即推送给商户 实现即时通讯 自己搭建服务器 选择支持的协议 websocket xmpp 使用一些比较成熟的框架 socketio xmppframework 自己封装socket 使用成熟的第三方方案 融云 环信 2.websocket和socketio websocket和http都是基于tcp http建立的是短连接, 而websocket建立的是长连接 socket.io是基于websocket协议的一套成熟的解决方案 优点 性能好 支持多平台 缺点 传输的数据并不完全遵循websocket协议, 这就要求客户端和服务端都必须使用socket.io解决方案 安装 pip install python-socketio 3. 搭建socketio服务器 (重点) 搭建支持协程的socket服务器 pip install python-socketio pip install eventlet # eventlet包提供了协程的支持 安装chrome插件firecamp

即时通讯(二)

易管家 提交于 2019-11-28 16:17:44
Socket.IO     Socket.IO本是一个面向实时web应用的JavaScript库,现在已经成为拥有众多语言的Web即时通讯应用框架。     Socket.IO 主要使用WebSocket协议。但是如果需要的话,Socket.io可以回退到几种其它方法,例如Adobe Flash Sockets,JSONP拉取,或是传统的AJAX拉取,并且在同时提供完全相 Socket.IO 不等价于 WebSocket,WebSocket只是Socket.IO实现即时通讯的其中一种技术依赖,而且Socket.IO还在实现WebSocket协议时做了一些调整。 我是一个python 工作者,那实际在python中怎么使用呢? 首先要安装 pip install python-socketio 创建服务器 import socketio # create a Socket.IO servers sio = socketio.Server() # 打包成WSGI应用,可以使用WSGI服务器托管运行 app = socketio.WSGIApp(sio) # Flask Django       创建好的app对象后,使用uWSGI服务器运行此对象。 from wsgi import app # a Flask, Django, etc. application import

58沈剑:架构师的平凡之路

痞子三分冷 提交于 2019-11-27 12:40:40
沈剑58技术委员会主席,58高级架构师,58到家技术总监。C2C技术部负责人,58技术学院优秀讲师。   1,程序员客栈席文奕:你是何时开始接触编程的?   沈剑:不算初中的小霸王超级玛利亚和高中文曲星的vb小程序(笑),真正接触程序编写就是03年吧,我进华科大读计算机学院的时候。   2,程序员客栈席文奕:为什么选择读计算机专业?   沈剑:当时比较崇拜黑客吧,所以选择了计算机专业。后来才知道,计算机学院学的和黑客完全不是一回事。   3,程序员客栈席文奕:大学里都在传,现在计算机专业毕业的很多都去网吧做网管了?   沈剑:应该没那么糟吧。   4,程序员客栈席文奕:你是如何从菜鸟成长为一线互联网的技术高层的,进阶之路是什么?   沈剑:算不上技术高层,顶多是一个资深的程序员。从事这一行,真的需要一步一个脚印,任何人如此。先打好技术基本功,如编程语言、设计模式、研发工具、三方类库等;做好自己负责的工作,职责范围由小到大,从子模块到模块、服务、子系统、复杂系统、到整体架构等;了解清楚业务,学习各类业务架构,踩各种坑,一步步积累经验,打怪升级。   5,程序员客栈席文奕:从百度到58同城,你的职业生涯经历了哪些转变?   沈剑:百度有很多技术大牛,在百度我对即时通讯的业务和架构有了第一步的沉淀和积累。到了58后的前两年,有一个机会让我从0开始搭建一个百万级别同时在线的即时通讯的架构

即时通信WebSocket 和Socket.IO

99封情书 提交于 2019-11-27 05:55:41
WebSocket HTML5定义了WebSocket协议 ,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。 在2008年诞生,2011年成为国际标准。 现在基本所有浏览器都已经支持了。 WebSocket是一种在单个TCP连接上进行全双工通信的协议。 在WebSocket API中,浏览器和服务器只需要完成一次握手(不是指建立TCP连接的那个三次握手,是指在建立TCP连接后传输一次握手数据),两者之间就直接可以创建持久性的连接,并进行双向数据传输。 Websocket使用ws或wss的统一资源标志符,类似于HTTPS,其中wss表示在TLS之上的Websocket。如: ws://example.com/wsapi wss://secure.example.com/ Websocket使用和 HTTP 相同的 TCP 端口,可以绕过大多数防火墙的限制。默认情况下,Websocket协议使用80端口;运行在TLS之上时,默认使用443端口。 握手协议 WebSocket 是独立的、创建在 TCP 上的协议。 报文 Websocket 通过 HTTP/1.1 协议的101状态码进行握手。 为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)。 一个典型的Websocket握手请求如下: 客户端请求