博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket笔记
阅读量:4324 次
发布时间:2019-06-06

本文共 2340 字,大约阅读时间需要 7 分钟。

参考:

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协议的浏览器。

简单例子:

服务端:

var app = require('http').createServer(handler), //创建一个HTTP服务器    io = require('socket.io').listen(app),//把服务器实例传递给Socket.IO    fs = require('fs'),url = require("url");app.listen(8080);//绑定8080端口function handler (req, res) {        fs.readFile(__dirname + '/home.html',function (err, data) {            if (err) {                res.writeHead(500);                return res.end('Error loading home.html');            }            res.writeHead(200, {'Content-Type': 'text/html'});            res.end(data);        });    }io.sockets.on('connection', function (socket) { //监听socket连接,执行回调    socket.emit('news',{'name':'zzn'});//发射一个news事件    socket.on('my other event', function (data) {//监听my other event这个事件        console.log(data);    });});

  

客户端home.html:

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

socket.io API

 

转载于:https://www.cnblogs.com/leyi/p/5094860.html

你可能感兴趣的文章
Composite UI Application Block (CAB) 概念和术语
查看>>
64位MATLAB和C混合编程以及联合调试
查看>>
原生js大总结二
查看>>
PHP基础
查看>>
UVa 11488 超级前缀集合(Trie的应用)
查看>>
Django 翻译与 LANGUAGE_CODE
查看>>
[转]iOS教程:SQLite的创建数据库,表,插入查看数据
查看>>
【转载】OmniGraffle (一)从工具栏开始
查看>>
初识ionic
查看>>
java 中打印调用栈
查看>>
开发 笔记
查看>>
数据挖掘算法比赛 - 简单经验总结
查看>>
生成商户订单号/退款单号
查看>>
使用Android OpenGL ES 2.0绘图之六:响应触摸事件
查看>>
我们过去几年做对了哪些事
查看>>
ubuntu 16.04LTS
查看>>
javascript深入理解js闭包
查看>>
Java Bigdecimal使用
查看>>
SQL注入之绕过WAF和Filter
查看>>
jquery validate使用方法
查看>>