一、基本介绍

  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的浏览器等)。

  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提供的传统请求方式很好的结合,即可以在同一个域名,同一个端口提供两种连接方式。

二、简单示例

   搭建Socket.IO环境需要先创建一个作为工作空间的目录,然后安装Node.js,并在工作空间下安装Socket.IO(命令:npm install socket.io),这样环境已经搭建完成。还可以安装基于Node.js框架(如Express.js等)以协助应用的服务器端开发。

  服务器段示例代码如下:

var io = require('socket.io').listen(8080);
io.sockets.on('connection', function (socket) {socket.emit('news', { hello: 'world'});socket.on('my other event', function (data) {console.log(data);});
});

  客户端示例代码如下:

<script src="https://cdn.bootcss.com/socket.io/2.1.1/socket.io.dev.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost:8080');
socket.on('news', function (data) {console.log(data); socket.emit('my other event', { my: 'data'});
});</script>

  执行之后:先客户端接受服务器推送信息news,打印{hello:world}

  后客户端向服务端发送信息,触发服务端事件,打印{ my: 'data' }

Socket.IO介绍:支持WebSocket、用于WEB端的即时通讯的框架相关推荐

  1. websocket 发送图片_基于WebSocket的web端IM即时通讯应用的开发

    基于WebSocket的web端IM即时通讯应用的开发 功能列表: 1.Web端的IM即时通讯应用 2.支持上线.下线.实时在线提醒 3.单聊.群聊的建立 4.普通文字.表情.图片的传输(子定义富文本 ...

  2. 聊一聊Web端的即时通讯

    聊一聊Web端的即时通讯 Web端实现即时通讯的方法有哪些? - 短轮询 长轮询 iframe流 Flash Socket 轮询 客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并 ...

  3. 跟着源码一起学:手把手教你用WebSocket打造Web端IM聊天

    本文作者芋艿,原题"芋道 Spring Boot WebSocket 入门",本次有修订和改动. 一.引言 WebSocket如今在Web端即时通讯技术应用里使用广泛,不仅用于传统 ...

  4. koa+mysql+vue+socket.io全栈开发之web api篇

    原文地址:koa+mysql+vue+socket.io全栈开发之web api篇 目标是建立一个 web QQ的项目,使用的技术栈如下: 后端是基于koa2 的 web api 服务层,提供curd ...

  5. 使用socket.io做一个简单的WEB聊天室

    使用socket.io做一个简单的WEB聊天室(可消息私发) 1. 创建一个空的工程目录 空的目录命名为chat-web 2. 创建package.json 使用命令:npm init,会引导你设置p ...

  6. 用于二次开发企业即时通讯源码(C++/MFC)

    用于二次开发企业即时通讯源码(C++/MFC),现在,做一个普通的即时通讯软件不是一件难事,网上有很多很好的这类软件的源代码可以拿来使用.今天就介绍一个我用过,觉得不错的给大家.软件叫 XEIM,中文 ...

  7. 《 Socket.IO》 解决 WebSocket 通信

    大家好呀,我是小菜~ 本文主要介绍 Socket.IO 微信公众号已开启,小菜良记,没关注的同学们记得关注哦! 在介绍 Socket.IO 之前, 我们先考虑一个问题, 如果这个时候有个需求, 类似实 ...

  8. WebSocket 实现 Web 端即时通信

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 前言 WebSocket 是HTML5开始提 ...

  9. 利用websocket实现web端在线客服实时聊天系统

    在线聊天系统 需求场景模拟 开发需求 一.技术选型 二.需求分析 效果演示 软件需求实现 1.技术架构 2.实现流程图:(`仅供参考`) 一.数据库设计 二.代码实现 1.web端 1.前端代码 2. ...

最新文章

  1. PJ Naughter's Freeware Library
  2. 数据库连接池的选择及其开发配置
  3. Laravel核心解读--ENV的加载和读取
  4. win2003下APACHE2.050+PHP5+MYSQL4.0.20+PHPMYADMIN2.57 的简易安装配置
  5. Citrix为什么要兼容第三方服务器虚拟化平台
  6. 初学Sockets编程(四) 发送和接收数据
  7. php pdo exec,PDO::exec
  8. 智迈职称计算机一练通破解版,智迈初级会计职称考试软件
  9. 高通qxdm抓取sensor的log【学习笔记】
  10. 海湾汉字编码表全部_汉字编码简明对照表
  11. ctf攻防渗透-加密-栅栏密码
  12. matlab车牌倾斜校正,求做车牌倾斜校正程序。
  13. 阿里巴巴“牛逼”了,申请“行政干预”区块链专利
  14. 自我觉察日志——9.17 (为什么老想买东西?)
  15. 电子邮箱是什么?注册邮箱163、tom、qq等品牌有什么好处?
  16. 【跳坑日记】Ubuntu 16.04安装 Ruby2.7.0遇到的坑:cannot load such file -- openssl (LoadError)
  17. 通过GRUB引导U盘为引导活动区,从硬盘安装win8 64bit
  18. c语言字符substr,c substr()字符函数的使用方法
  19. 仿微信、QQ评论点击事件
  20. 带你认识 flask 国际化和本地化

热门文章

  1. 全球及中国人工智能驱动的医学成像行业全景调研及运营战略分析报告2021-2027年版
  2. 中国杀菌剂行业需求趋势与投资战略规划研究报告2021-2027年版
  3. 全球及中国1-氯-3-乙基苯行业发展规划分析及市场前瞻报告2021年版
  4. 全球及中国企业旅游保险行业发展价值评估及投资方向建议报告2021-2027年版
  5. openresty开发系列25--openresty中使用json模块
  6. Uncaught TypeError: $(…).orgcharts is not a function
  7. Tengine 反向代理状态检测
  8. Java基础知识:IO
  9. HashTable 解决碰撞(冲突)的方法 —— 分离链接法(separate chaining)
  10. Tomcat数据源总结