Websocket 与 Socket.IO、Socket

      最近在开发网络应用项目,使用websocket协议,后端弄好后,昨天前端同事忽然跑过来讲,你这个是Socket.IO,不是 Websocket!?一脸无奈 —| | |
      我是清楚Socket.IO是基于Websocket协议,但其余就解释不了给他。另也对websocket 与 Socket的关系有疑惑? 开启 G妹 模式 ......html

Websocket 为什么?

        详见 ----> websocket的那些事 - 初识前端

Socket.IO是什么?

        支持WebSocket协议、用于实时通讯和跨平台的框架。html5

        Socket.IO除了支持WebSocket通信协议外,还支持许多种轮询(Polling)机制以及其它实时通讯方式,并封装成了通用的接口,而且在服务端实现了这些实时机制的相应代码。Socket.IO实现的Polling通讯机制包括Adobe Flash Socket、AJAX长轮询、AJAX multipart streaming、持久Iframe、JSONP轮询等。Socket.IO可以根据浏览器对通信机制的支持状况自动地选择最佳的方式来实现网络实时应用。java

         Socket.IO设计的目标是构建可以在不一样浏览器和移动设备上良好运行的实时应用,如实时分析系统、二进制流数据处理应用、在线聊天室、在线客服系统、评论系统、WebIM等。目前,Socket.IO已经支持主流PC浏览器(如IE、Safari、Chrome、Firefox、Opera等)和移动平台上的浏览器(iOS平台下的Safari、Android平台下的基于Webkit的浏览器等)。git

        Socket.IO已经具备众多强大功能的模块和扩展API,如(session.socket.io)(http session中间件,进行session相关操做)、socket.io-cookie(cookie解析中间件)、session-web-sockets(以安全的方式传递Session)、socket-logger(JSON格式的记录日志工具)、websocket.MQ(可靠的消息队列)、socket.io-mongo(使用MongoDB的适配器)、socket.io-redis(Redis的适配器)、socket.io-parser(服务端和客户端通信的默认协议实现模块)等。github

         Socket.IO实现了实时、双向、基于事件的通信机制,它解决了实时的通讯问题,并统一了服务端与客户端的编程方式。启动了Socket之后,就像创建了一条客户端与服务端的管道,两边能够互通有无。它还可以和Express.js提供的传统请求方式很好的结合,便可以在同一个域名,同一个端口提供两种链接方式。web

java实例代码详见 ----> websocket的那些事 - java client/server Hello World实例redis

Socket?

        常听人说,Socket编程,直观理解就是网络编程。mongodb

       Socket 是TCP/IP网络的API,Socket接口定义了许多函数或例程,程式员可以用他来研发基于TCP/IP协议的网络应用程式。编程

总结

       一、WebSocket同HTTP同样是应用层的协议,可是它是一种双向通讯协议,经过http协议创建链接,通讯则使用TCP

        二、Socket是基于 TCP/IP[传输控制层协议] 编程接口

        这样看来,websocket 与 socket 没有半毛钱关系,但,仍是有点关系 

       话说 -_- 2008年6月18日,一群WHATWG的工程师在讨论一些技术问题,一个工程师提到说「咱们以前讨论的那个东西,不要叫TCPConnection 了,仍是起个别的名字吧 」,接着几个名字被说起,DuplexConnection,TCPSocket,SocketConnection ,一个叫mcarter(Michael Carter )的工程师说他立刻要写一篇关于Comet的文章,若是能够肯定这个名称,想在文章中引用这个名字。

       Socket一直以来都被人用来表示网络中一个链接的两端,考虑到怎么让工程师更容易接受,后来Hixie说了一句「我看WebSocket这个名字就很适合嘛(Hixie briefly pops back online to record that "WebSocket" would probably be a good new name for the TCPConnection object)」,你们都没有异议,紧接着mcarter在Comet Daily中发表了文章Independence Day: HTML5 WebSocket Liberates Comet From Hacks,后来随着各大浏览器对WebSocket的支持,它变成了实际的标准,IETF也沿用了这个名字。

参考资料

Socket.IO:支持WebSocket协议、用于实时通讯和跨平台的框架

WebSocket和Socket的区别

WebSocket介绍,与Socket的区别

相关文章
相关标签/搜索