赞
踩
Socket
Socket中文意思“套接字”,是进程间进行网络通信的抽象。
通过Socket提供的API可以:
Connect:和别的节点建立连接;
Bind:绑定本地指定端口;
Read:读取其它节点发送的数据;
Write:向其它节点发送数据;
Close:关闭连接针对不同的传输层协议,Socket提供了不同的API,可以是TCP协议,也可以是UDP协议;
注意:Socket通信特点是全双工的,即通信两端可以互相发送、接收消息;这点很重要,WebSocket就是利用这一特性。
WebSocket
WebSocket可以理解为“Web”+“Socket”为什么需要WebSocket:Web通信一般基于HTTP协议,
但是HTTP最初设计为无状态的短连接【虽然http2/3已经做了改进,支持长连接、多路复用等特性】,
对于连续传递数据的场景可能需要频繁的进行连接创建、传输数据、连接断开操作。而HTTP是基于TCP实现的,
建立TCP连接需要三次握手,断开连接需要四次挥手。这其实是非常低效且浪费资源的。
为了解决上面的问题,WebSocket协议基于TCP实现了长连接机制,一次连接周期内可以进行全双工通信,
避免频繁创建连接、断开连接带来的性能开销。
Netty
Netty是Java语言实现的应用层网络框架,其对网络通信模型做了更高层次上的抽象。
使用Netty进行网络编程时,可以任意选择底层通信协议。如:HTTP通信,或者WebSocket,
当然也可以基于TCP/UDP自定义通信协议。
socket.io和netty-socketio
socket.io是基于Node.js实现的网络通信框架,支持基于事件的双向通信。
使用了WebSocket【或HTTP长连接】作为底层的通信协议。主要用于浏览器和服务器间的通信。
socket.io在基本的通信能力基础上,还提供一些非常实用的功能,如:自动重连心跳检测多路复用机制
netty-socketio
netty-socketio是基于Netty框架实现socket.io服务端。
关于协议和实现:协议定义了标准和规范,其实现方式或者说实现语言可能有多种,
比如:socket.io本质上也是一种通信标准,其client和server可以有多种实现方式。
如:原生的server是通过Node.js实现的。而netty-socketio是基于netty实现的socket.io server。
python-socketio是基于python语言实现的socket.io server。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。