新手入门:史上最全Web端即时通讯技术原理详解

前言有关IM(InstantMessaging)聊天应用(如:微信,QQ)、消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM(相关文章请参见:《IM架构篇》、《IM综合资料》、《IM/推送的通信格式、协议篇》、《IM心跳保活篇》、《IM安全篇》、《实时音视频开发》)、消息推送应

Webpack的dll功能

最近使用Webpack遇到了一个坑。我们构建前端项目的时候,往往希望第三方库(vendors)和自己写的代码可以分开打包,因为第三方库往往不需要经常打包更新。对此Webpack的文档建议用CommonsChunkPlugin来单独打包第三方库。entry: { vendor: ["jquery", "other-lib"], app: "./entry"}new Com

Redu 登录状态判断的一些实践

最近一直在写一个React、Redux的前端项目,登录状态验证这一块还是比较头疼的。我的实践下有三种方式来验证用户登录状态,目前我选择用三种方式一起用在项目里面。Redux高阶函数验证(High-Order Function)Actions中间件验证Component WillMount 验证之所以用三种方式一起是因为Redux高阶函数在性能调优的时候并不是特别容易。Red

iPad和iPhone开发的区别

一、iPhone和iPad开发的区别屏幕的尺寸/分辨率UI元素的排布/设计键盘API屏幕方向的支持… …因为iPad屏幕比iPhone大,可以容纳更多的UI元素,因此排列方式是不一样的比如新浪微博:(左图是iPhone,右图的iPad)键盘iPad的虚拟键盘多了个退出键盘的按钮左图为iPhone键盘,右图为iPad键盘iPad特有的APIPad多了一些特有的类,比如:UIP

原创validate信息验证控件,简单易用

更新validate version1.1 源码(开源代码已在github上,点击上面的源码查看)为了方便使用,现更新版本,主要变更如下JS代码不用自己设置太多错误信息提示一律显示在验证框下面,以红色字体标出错误信息可以自己设置,也可以设置为空,为空时显示默认提示html页面需要给form添加ID,给INPUT添加一些属性,INPUT下面添加标签label。详情如下:使用时

视频崛起,品牌主该如何顺势而为?

视频正逐渐改变着非视频服务领域视频将主导未来互联网市场的一个十分有力的证据是:目前视频已经对一些线上非常热门的领域(不像YouTube一样以视频领域起家)造成了非常大的冲击。举个例子, Instagram——照片分享类App的巨头,在今年的早些时候,宣布上线了一份60秒视频功能,因为公司此前的一份调研显示,过去6个月,用户花在观看视频上的时间增长速度已超40%。目前视频为王

阿里能让锤子这条咸鱼翻身吗?

阿里入股前的锤子,为何总是那么惨?锤子科技公司是2012年成立的,锤子第一部智能手机TI从酝酿到发布经历了两年的漫长时间,之后在2015年发布了锤子T2。可惜的是,锤子智能手机从T 1到T 2,销量一直不如人意,仅仅上市3个月后,其官方定价就下调超过一千元,创下了当时国产手机短期内降价幅度的最高纪录。截止到坚果上线,T1只销售25万余部,离计划的50万部差了将近一半。而今年

除了广告、电商和会员费,社群还有哪些更具价值的商业模式?

商业模式是根植于产品本身的,几乎没有一套通用的商业模式可以用在任何一个产品上。社群也一样,由于社群种类多种多样,我们不可能用一种商业模式去套用所有的社群。现实就是如此,同样的商业模式,用在别人身上变现了,自己拿过来却收效甚微,甚至引起群成员反感。当然,这里面的原因极其复杂,最主要的就是商业模式是否能与社群的属性相匹配。商业变现一般是社群运营发展过程中自然出现的结果,绝对不会

为何说创业公司在财务上必须保守?

1、企业初创成功在经历了初期战略探索阶段后,一家新兴的企业找到了走向成功的模式,它通过提供一种比竞争的同行更好的产品、比同行更好地帮助顾客完成某种期望的能力,获得了顾客的认同以及可以生存的市场地位,从而能够得以发展。由于在初期战略上获得成功,管理团队开始进行下一个战略的规划,他们很清晰自己获得成功的原因,所以在选择中,他们会集中所有资源来巩固自己的竞争优势,固化自己的核心业

一个百度员工的离职感悟,送给在职场的90后

这是第一次,我不是和老板闹翻离职;这是第一次,我带着晋升的喜悦而离职;这是第一次,我带着满满的收获而离职。我曾经认为,我永远不会成为一个好员工,因为我太独、太挑剔、不喜欢听话好孩子、而且讨厌一切想改变我的人。但是三年过去,我改变了不少,我必须承认,所谓“进步”的过程,就是被认可的过程,也是被“驯化”的过程。所谓“驯化”,就是了解规则、遵守规则、利用规则的过程。我并非被某些人

使用web方式开发cordova(ionic)应用即时聊天(im)功能(2)

把前置工作做完之后就可以正式进入开发环节了界面编写界面大家就自由发挥了,各有各的风格大家自由发挥呗,由于本人ui水平大概初中生的水平,所以是在网络上找ui资源,然后切出来的,感觉也还可以。如果大家也是用ionic开发,也不想麻烦的话,可以用下这个资源,是ionic出的几个模版,代码也有了,可以拿来直接使用。保存历史记录融云 Web SDK 最新提供 getHistoryMe

怎么在网页中打开你的app

先声明一下关于ios中9.0打开方式的文章来自博客:IOS9通用链接(universal link)前言对于一个完备的互联网产品而言需要有app端与web端两个不同前端,对于产品而言很多都希望能够将wap页上的用户引向native app上这就要求前端工程师们为网页提供各种入口去打开app,今天我们就聊一聊app的打开方式(有错误的地方还请高手指正)。常规打开对于app打开

强势围观!2016年中国互联网企业100强榜发布

7月12日,中国互联网协会、工业和信息化部信息中心在京召开2016年中国互联网企业100强发布会暨百强企业论坛,会上发布2016年中国互联网企业100强榜单,阿里巴巴、腾讯、百度、京东、奇虎360、搜狐、网易、携程、唯品会、苏宁云商位列前十位。而小编编也注意到,去年还排在前8名的新浪今年连前10都进不去!100强到底是如何评选出的?据了解,本次中国互联网企业100强榜单评选

页面性能优化实践总结

页面性能优化学而不思则惘,思而不学则殆前几天接到一个页面效果优化的任务,边做边查阅了一些关于页面性能的资料。做完任务之后,抽空写了一篇总结,梳理一下思路,加深自己的理解。1. chrome的timeline先思考这样的一个问题:什么叫页面性能好?如何进行评判?直观上讲,我们通常会通过一个页面流不流畅来判断一个页面的性能好不好。但是开发中,总不能这么随意吧。1-1 fpsFP

Docker Swarm学习笔记

构建Swarm集群搭建基础环境官方文档中演示时用到了五台主机/虚拟机;这里因为资源有限,只用三台;创建虚拟机(可以用主机,也可以用虚拟机);安装Ubuntu 16.04 Server amd64系统(系统版本最好不要低于Ubuntu 14.04);开启并配置ssh服务(方便操作);安装Docker(仅作参考,也可以根据下面的步骤操作);Docker Registry搭建私有

webpack 教程资源分享

webpack入门级别 (适合新手入门) http://guowenfh.github.io/2016/03/24/vue-webpack-01-base/ 有图文并茂 简单的例子轻松让新手入门。 webpack入门 - 汇智网 webpack官方手册 全英文,水平不好的不建议看 阮一峰的webpack 这个非常简单也适合新手入门再配简单的案例让你轻松上手。 傻瓜化g

Sass 快速入门教程

@import若不想将scss编译成css文件,在scss文件名前面加上下划线_。使用CSS @import指令默认情况下@import在当前目录下需找scss文件加载,若想使用原生css的import指令可以使用下面四个规则:当@import后面跟上的文件名是以.css结尾的时候;当@import后面跟的是http://开头的字符串的时候;当@import后面跟的是一个u

JS中的位置与大小

最近事儿比较多,一直没时间写东西,前几天又遇到关于获取元素大小的问题,每次遇到这类问题就翻书,比较费时间,所以总结一下。1.元素的偏移量元素的偏移量包括元素在屏幕上占用的所有可见的空间。元素的可见大小由其高度、宽度决定,包括所有内边距、滚动条和边框大小(注意:这里并不包括外边距)。2.客户区大小元素的客户区大小指的是元素内容机器内边距占据空间的大小。要确定浏览器可见窗口的大

ngin做tcp代理服务器

虽然做一个tcp代理也不是什么难事,不过如果直接拿来就可以用,也是一个不错的选择。 nginx自1.9版本以后,就支持了tcp代理了,配置很简单,修改nginx.conf里的配置,增加 stream { upstream cloudsocket { hash $remote_addr consistent; server 192.168.58.143:3308 weight

[譯] 學習 CSS clip-path 屬性

整體來說網頁主要是由矩形所構成的,另一方面印刷品則具備相對多樣性。造成這樣差異的原因有很多,不過其中一個即是缺少合適的工具。這篇文章主要會介紹 clip-path 這個 css 的樣式規則可以讓我們遮掉元素的局部,就是不顯示出來。達成這項功能背後的原理就是我們可以透過它去定義可視區,類似於遮色片的概念。我們將從基礎開始然後涵蓋語法,進一步理解進階的概念。基礎clip 意思是