WebSocket出现之前,web实时推送,一般采用轮询和Comet技术(可细分为长轮询机制和流技术两种),需要大量http请求,服务器受不了。HTML5定义了WebSocket协议,基于TCP协议,由通讯协议和编程API组成,在浏览器和服务器之间建立双向连接,以基于事件的方式,赋予浏览器实时通讯的能力。

建立WebSocket连接的过程是浏览器首先发起一个http请求,在请求头中附带着“Upgrade: WebSocket”头信息,表名申请协议升级,服务器解析后产生应答信息,服务器与客户端的WebSocket连接就建立起来了,可以持续通信。这当然需要支持WebSocket浏览器的支持,不支持的用Comet接收发送信息来实现兼容。后面会简单介绍一下Comet。

Express:基于Node.js平台,快速,开放,极简的web开发框架,在socket.io中使用到了Express,所以需要安装。

1.它提供了一系列强大的特性,可以帮助构建各种web及移动设备的应用。

2.丰富的http快捷方式的任意组合和任意排列组合的connect中间件。

3.不对Node.js已有的特性进行二次抽象,只是在它基础上扩展web应用所需要的基本功能,不会影响性能。

namespace:命名空间,相当于命名域,在一定的范围内,命名有效。在socket.io中用namespace实现隔离机制,在不同namespace下的客户端消息具有不可见性。

环境搭建:

1.首先安装node.js,笔者使用的是window环境,直接下载双击安装,然后需要设置环境变量,可以引用其他的方法设置,都是可以的,我个人这样设置的

NODE_PATH=D:\_soft\nodejs\node_modules

PATH中添加:;D:\_soft\nodejs\;$HOME/node/bin

2.安装Express,保存,不是临时安装,临时安装省略掉 —save

npm install express – save

3.安装socket.io

npm install socket.io

4.环境搭建完成了

附录:

Comet:

1.AJAX长轮询方式:JavaScript调用XMLHttpRequest发出HTTP请求,返回值用来更改界面的显示。(服务器会阻塞请求知道有数据时才会返回或超时才返回。客户端在处理完返回数据后,会再次发送消息重新建立连接。客户端去数据是把当前服务器所有累计的变化的信息一次取回)

2.基于iframe及htmlfile的流方式:html中包含iframe,在html界面中嵌入隐藏帧,将这个隐藏帧的SRC属性设置为对一个长连接的请求,服务器就能源源不断地往客户端输入数据。

链接:

中文一个还不错的Express学习网站:http://www.expressjs.com.cn/

【socket.io研究】0.前提准备的更多相关文章

  1. Socket.IO 1.0 正式发布,快速可靠的实时引擎

    Socket.IO 是目前 Web 领域最火的实时引擎,用于实现基于事件的双向实时的通信.它适用于任何平台,浏览器或设备,专注于可靠性和速度.您可以将数据推送到客户端,并获得实时的计数,日志或图表. ...

  2. 【socket.io研究】3.手机网页间聊天核心问题

    前面我们已经说了服务器相关的一些内容,且又根据官网给出的一个例子写了一个可以聊天的小程序,但是这还远远不够呀,这只能算是应用前的准备工作.接下来,一起来考虑完善一个小的聊天程序吧. 首先,修改服务器的 ...

  3. 【socket.io研究】2.小试牛刀

    1.建立个项目,也就是文件夹,这里使用testsocket 2.创建文件package.json,用于描述项目: { "name":"testsocket", ...

  4. 【socket.io研究】1.官网的一些相关说明,概述

    socket.io是什么? 官网的解释是一个实时的,基于事件的通讯框架,可以再各个平台上运行,关注于效率和速度. 在javascript,ios,android,java中都实现了,可以很好的实现实时 ...

  5. Socket.io 0.7 – Sending messages to individual clients

    Note that this is just for Socket.io version 0.7, and possibly higher if they don’t change the API a ...

  6. 记一次结合PHP多进程和socket.io解决问题的经历

    公司是做棋牌游戏的.前段时间接到一个后台人工鉴定并处理通牌作弊玩家的需求,其中需要根据几个玩家的游戏ID查询并计算他们在某段时间内彼此之间玩牌输赢次数和输赢总额. 牌局数据是存储在日志中心的,他们把牌 ...

  7. Get the client's IP address in socket.io

    From: https://www.wentong.org/codex/question-2018081564702.html When using socket.IO in a Node.js se ...

  8. socket.io对IE8的支持

    默认下载了最新版的socket.io,版本号是1.7.2,对IE8的支持不好,反正在IE8下收发消息都不行.在网上查了很多资料,都解决不了IE8的问题,崩溃. 最后用了一个大家比较认可的版本1.0.6 ...

  9. 利用socket.io实现消息实时推送

    最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞.评论.关注等操作时,需要由服务器向用户实时地推送一条消息.最终完成的项目地址为:socket-message-push,这里 ...

随机推荐

  1. 转 常用JQuery插件整理

    虽然自己也写过插件,但JQuery插件种类的繁多,大多时候,我还是使用别人写好的插件,这些都是我用了同类插件里较为不错的一些,今天就整理一下公开放出来. UI: jquery.HooRay(哈哈,自己 ...

  2. php的setcookie()函数详解

    一.浏览器COOKIE原理: 浏览器在访问某个域名时会先读取本地的COOKIE文件(CHROME浏览器在C:\Users\Administrator\AppData\Local\Google\Chro ...

  3. php设计模式2策略模式

    <?php /** ****************************************************** * 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接 ...

  4. UCOS 请求任务删除函数 及其应用

    有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失.在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己.用户 ...

  5. 08 - 删除vtkDataObject中的SetWholeExtent() 方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中之一就是SetWholeExtent().SetWholeExtent()方法先前被用来管理结构话数据 ...

  6. 转:6款Java转C#的最佳工

    原文来自于:http://designzum.com/2014/03/27/best-tools-to-convert-java-to-c-source-code/ ava is the class ...

  7. IIS Server Farms集群负载

    序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一样,时不时的汹涌而至,让我们防不胜防.那么后台的高可用,以及服务器的处理能力就要做一个横向扩展的方案,以使后台业务持续的稳定 ...

  8. no-cache、max-age=0、must-revalidate区别

    之前深入搜索了多次,根据stackoverflow的回答进行一些总结(http://stackoverflow.com/questions/18148884/difference-between-no ...

  9. ASP.NET MVC – 关于Action返回结果类型的事儿(上)

    原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一.         ASP.NET MVC 1.0 Result 几何? Action的 ...

  10. android中使用PopupWindow实现弹出窗口菜单

    结合上篇android中使用ViewPager实现图片拖动,我们实现了点击“帮助”按钮的功能,这一篇则是接着上一篇,让我们一起来完成“我的”按钮的功能,这一功能,则是使用PopupWindow来实现弹 ...