websocket 和 socket.io 之间的区别是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket 和 socket.io 之间的区别是啥相关的知识,希望对你有一定的参考价值。
websocket和socket.io之间的区别为:性质不同、兼容不同、用途不同。
一、性质不同
1、websocket:websocket是一种让客户端和服务器之间能进行双向实时通信的技术。
2、socket.io:socket.io是将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口。
二、兼容不同
1、websocket:在使用websocket时,,虽然主流浏览器都已经支持,但仍然可能有不兼容的情况。
2、socket.io:在使用socket.io时,不用担心兼容问题,底层会自动选用最佳的通信方式。
三、用途不同
1、websocket:websocket适合用于client和基于node搭建的服务端使用。
2、socket.io:socket.io适合进行服务端和客户端双向数据通信。
参考技术A 这个问题之前已经有人问过了,我也回答过了。socket.io是对websocket的分装。因为不是所有的浏览器都可以支持websocket。如果浏览器支持websocket,那么socket.io就等同于websocket。socket.io还用到了其它的技术来模拟websocket,所以当你是用socket.io的时候,不管浏览器是否支持websocket,你都可以实现异步操作。当然如果你的客户端是用了socket.io,server端也必须对应使用。本回答被提问者和网友采纳用于WEB端的即时通讯的框架Socket.IO
WebSocket是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯。
而Socket.IO是一个完全由JavaScript实现、基于Node.js、支持WebSocket的协议用于实时通信、跨平台的开源框架,它包括了客户端的JavaScript和服务器端的Node.js。Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(Polling)机制以及其它实时通信方式,并封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。Socket.IO实现的Polling通信机制包括Adobe Flash Socket、AJAX长轮询、AJAX multipart streaming、持久Iframe、JSONP轮询等。Socket.IO能够根据浏览器对通讯机制的支持情况自动地选择最佳的方式来实现网络实时应用。当前,Socket.IO最新版本是于2015年1月19日发布的1.3.0版本,该版本增强了稳定性和提高了性能,并修复了大量Bug。
Socket.IO设计的目标是构建能够在不同浏览器和移动设备上良好运行的实时应用,如实时分析系统、二进制流数据处理应用、在线聊天室、在线客服系统、评论系统、WebIM等。目前,Socket.IO已经支持主流PC浏览器(如IE、Safari、Chrome、Firefox、Opera等)和移动平台上的浏览器(iOS平台下的Safari、Android平台下的基于Webkit的浏览器等)。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询
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(服务端和客户端通讯的默认协议实现模块)等。
Socket.IO实现了实时、双向、基于事件的通讯机制,它解决了实时的通信问题,并统一了服务端与客户端的编程方式。启动了Socket以后,就像建立了一条客户端与服务端的管道,两边可以互通有无。它还能够和Express.js提供的传统请求方式很好的结合,即可以在同一个域名,同一个端口提供两种连接方式:
1 |
|
搭建Socket.IO环境需要先创建一个作为工作空间的目录,然后安装Node.js,并在工作空间下安装Socket.IO(命令:npm install socket.io),这样环境已经搭建完成。还可以安装基于Node.js框架(如Express.js等)以协助应用的服务器端开发。
分发授权
Socket.IO由网页程序设计公司Automattic使用JavaScript开发并基于MIT开源协议发布。
此外,社区开发者还为Socket.IO开发了一些开源插件/功能库,如:
1)Socket.IO 1.x系列版本的Java客户端Socket.IO-client.java,该功能库可以用于Android的相关应用中;
2)用于Socket.IO与iOS应用间进行通信的简单接口SIOSocket;
3)基于Netty的Socket.IO服务器端的Java实现Netty-socketio。
有关Socket.IO更多相关信息,读者可以登录其官网或者托管在GitHub的主页站点查看。
以上是关于websocket 和 socket.io 之间的区别是啥的主要内容,如果未能解决你的问题,请参考以下文章
Socket.IO介绍:支持WebSocket用于WEB端的即时通讯的框架