参考:

http://www.cnblogs.com/dolphinX/p/3460545.html

http://www.cnblogs.com/wei2yi/archive/2011/03/23/1992830.html

http://www.2cto.com/net/201211/166537.html

概念:
TCP协议与HTTP协议区别:
HTTP协议是短链接,单向通信,属于OSI参考模型里的应用层协议
TCP协议是长链接,双工通信,属于OSI参考模型里的传输层协议

---------------------------------------------------------------------------------------------------------

socket:
socket是对TCP/IP协议的封装,它是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。通过Socket,我们才能使用TCP/IP协议,简而言之,socket是调用TCP/IP协议的API。

---------------------------------------------------------------------------------------------------------

WebSocket API是下一代客户端-服务器的异步通信方法,是W3C推动的一个客户端标准,隶属于HTML5的范畴。

用法如下:

WebSocket API是只专注于客户端的API,因为每个服务器端语言有自己的API。下面的代码片段是打开一个连接,为连接创建事件监听器,断开连接,消息时间,发送消息返回到服务器,关闭连接。

// 创建一个Socket实例
var socket = new WebSocket('ws://localhost:8080');

// 打开Socket 
socket.onopen = function(event) {

// 发送一个初始化消息
  socket.send('I am the client and I\'m listening!');

// 监听消息
  socket.onmessage = function(event) { 
    console.log('Client received a message',event); 
  };

// 监听Socket的关闭
  socket.onclose = function(event) { 
    console.log('Client notified socket has closed',event); 
  };

// 关闭Socket.... 
  //socket.close() 
};

---------------------------------------------------------------------------------------------------------

Socket.IO:

由于有的低版本浏览器不支持WebSocket,所以出现了一个Socket.IO技术,他是对WebSocket的封装,不仅实现了ws协议,也支持长轮询等方式,兼容flash,IE6等不支持ws协议的浏览器。

简单例子:

服务端:

  1. var app = require('http').createServer(handler), //创建一个HTTP服务器
  2. io = require('socket.io').listen(app),//把服务器实例传递给Socket.IO
  3. fs = require('fs'),url = require("url");
  4.  
  5. app.listen(8080);//绑定8080端口
  6.  
  7. function handler (req, res) {
  8.  
  9. fs.readFile(__dirname + '/home.html',function (err, data) {
  10. if (err) {
  11. res.writeHead(500);
  12. return res.end('Error loading home.html');
  13. }
  14. res.writeHead(200, {'Content-Type': 'text/html'});
  15. res.end(data);
  16. });
  17.  
  18. }
  19.  
  20. io.sockets.on('connection', function (socket) { //监听socket连接,执行回调
  21. socket.emit('news',{'name':'zzn'});//发射一个news事件
  22. socket.on('my other event', function (data) {//监听my other event这个事件
  23. console.log(data);
  24. });
  25. });

  

客户端home.html:

  1. <script src="//cdn.bootcss.com/socket.io/1.3.7/socket.io.js"></script>
  2. <script type="text/javascript">
  3. var socket = io.connect('http://localhost:8080/');//建立socket连接
  4. socket.on('news', function (data) {//监听news事件
  5. console.info(data)
  6. socket.emit('my other event', { my: 'data' });//发射my other event这个事件
  7. });
  8. </script>

---------------------------------------------------------------------------------------------------------  

socket.io API

http://www.cnblogs.com/xiezhengcai/p/3956401.html

socket笔记的更多相关文章

  1. iOS socket 笔记

    ios 客服端: 下载 AsyncSocket 开发框架,拖到项目中 //建立 #import "ViewController.h" #import <sys/socket. ...

  2. linux c socket笔记 -服务端

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...

  3. C# Socket笔记

    看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句.(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是 ...

  4. socket 笔记(一)

    #include "stdafx.h" #include "WINSOCK2.H" #pragma comment(lib,"WS2_32.lib&q ...

  5. 操作socket笔记

    网络编程 1.tcp协议 #tcpserver #单纯一对一发 tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建tcp套接字 参 ...

  6. TCP IP SOCKET 笔记

    网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...

  7. tcp/ip http socket笔记

    1.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输 HTTP是应用层协议,主要解决如何包装数据 2.TCP连接的三次握手 第一次握手:客户端发送syn包到服务器,并进入SYN_SEND状态 ...

  8. C# Socket编程笔记(转)

    C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket:Server 端连接步骤: ...

  9. Android Socket编程学习笔记

    http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...

随机推荐

  1. Block存储区域

    Block存储区域 首先,需要引入三个名词: ● _NSConcretStackBlock ● _NSConcretGlobalBlock ● _NSConcretMallocBlock 正如它们名字 ...

  2. 数据库update死锁

    比较常见的死锁场景,并发批量update时的一个场景: update cross_marketing set gmtModified = NOW(), pageview = pageview+ #ex ...

  3. Filco minila 的蛋疼。

    3494左shift坏了,期间邮寄厂家维修,就把尘封多年的minila拿出来用着. 最为人诟病的问题:蓝亚适配,与mac跟iphone都能快速的匹配连接上.但是对于我的dell vestro 2012 ...

  4. Spark 个人实战系列(1)--Spark 集群安装

    前言: CDH4不带yarn和spark, 因此需要自己搭建spark集群. 这边简单描述spark集群的安装过程, 并讲述spark的standalone模式, 以及对相关的脚本进行简单的分析. s ...

  5. Flash Builder如何自定义工作目录

    熟悉了myeclipse可以自定义目录的设置,今天在使用flash builder 时,当导入一个工程到现有项目空间 选择根目录,点击浏览的时候出现的目录是C:\Users\Administrator ...

  6. ucos3的配置文件

    1,配置文件,用于系统的裁剪 均有详细的注释 为组件的开关 ​ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  7. RobotFramwork + Appium+ Andriod 环境搭建

    RF+Appium+Android环境搭建教程 - 1.RF安装 一.适用操作系统 Win7 旗舰版Sp1 32位操作系统 RF环境搭建,请参考文档<RobotFramwork安装指南> ...

  8. Semantic UI 中文参考手册

    一个拥有友好词汇表的前端框架,完全语义化的前端界面开发框架,为一组开发人员之间共享UI元素配备了规格.使用的词汇(类和ID)相比其它替代品更加简洁,从而降低了学习曲线.有许多HTML元素,UI元素和场 ...

  9. GridView与CheckBox完美结合

    版本一:单纯地实现全选和全取消,http://www.cnblogs.com/insus/archive/2009/03/14/1411613.html 版本二:修改选中行的背景颜色,http://w ...

  10. volley_之基本使用

    Volley的基本使用-------------- 本人初学,如有纰缪,望指正~ Volley是Google在2003年的I/O大会上推出的通信框架,结合了AsyncHttpClient和Univer ...