socket.io简介

weiyinfu weiyinfu     2023-02-12     393

关键词:

websocket是一种比较简单的协议,各种语言中都有很多实现版本,实际上它们差别不大,都是在websocket的基础上做些封装,随便选一个即可。

socket.io就是众多websocket库中的一种,它并不像其它库那样简单地实现了一下websocket,而是在websocket外面包裹了厚厚的一层。普通的websocket(例如ws库)只需要服务端就够了,socket.io自定义了一种基于websocket的协议,所以socket.io的服务端和客户端必须配套。简言之,如果服务端使用socket.io,那么客户端就没得选了,必然也用socket.io的客户端。

socket.io的服务端是基于node实现的(只提供了这一种语言的服务端实现),同时它提供了多种语言的客户端,包括JavaScript、Java、C++、Swift、Dart等,可以看出,socket.io是为了移动端才支持多种语言的,socket.io的目标很高远:统一天下,做最好的websocket库。

socket.io在websocket基础上提供了哪些功能呢?主要包括如下几个方面:

  • 可靠稳定。即便服务端使用代理或者负载均衡,也能够连接成功;
  • 跨平台。各种浏览器、各种移动端操作系统、各种形状的终端都支持;
  • 掉线重连和掉线检测。这跟socket.io自定义的ping协议有关;
  • 封装完好。API简洁清晰,支持room风格的websocket。

然而,在node中ws库远远要比socket.io流行,这可能是因为人们都喜欢接近本质的东西而不喜欢过多封装。ws已经足够好用了。基于ws,socket.io的多余功能完全可以自己用少量代码实现。

参考资料

socket.io
https://www.npmjs.com/package/socket.io
ws
https://www.npmjs.com/package/ws

/socket.io/socket.io.js 中不提供 Socket.io

】/socket.io/socket.io.js中不提供Socket.io【英文标题】:Socket.ioisnotservedin/socket.io/socket.io.js【发布时间】:2012-12-2420:46:28【问题描述】:我已在此处阅读有关我在node.js中的问题的答案,但我的问题仍然存在。在服务器中使用socket.io,... 查看详情

Express.js 'socket.io/socket.io.js 404'

】Express.js\\\'socket.io/socket.io.js404\\\'【英文标题】:Express.js\'socket.io/socket.io.js404\'Express.js\'socket.io/socket.io.js404\'【发布时间】:2017-02-0207:36:19【问题描述】:我正在尝试在使用ExpressJS的网站http://clickthebutton.herokuapp.com上合并实 查看详情

socket.io中文手册socket.io中文文档

socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情

socket.io中文手册socket.io中文文档

socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情

socket.io中文手册socket.io中文文档

socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情

未找到 Socket.io.js(node.js + express + socket.io)

】未找到Socket.io.js(node.js+express+socket.io)【英文标题】:Socket.io.jsnotfound(node.js+express+socket.io)【发布时间】:2014-10-2022:06:51【问题描述】:我一直在检查其他相关答案,例如:node.js/socket.io/socket.io.jsnotfoundSocket.ionotbeingservedbyNode.j... 查看详情

socket.io,io 未定义(JS 错误)

】socket.io,io未定义(JS错误)【英文标题】:socket.io,ioisnotdefined(JSError)【发布时间】:2011-08-0322:25:59【问题描述】:我刚开始使用socket.io,它在客户端页面上给出JS错误io未定义如何解决这个问题?【问题讨论】:【参考方案1】... 查看详情

socket.io 中 io.on 和 socket.on 的区别

】socket.io中io.on和socket.on的区别【英文标题】:Differenceinio.onandsocket.oninsocket.io【发布时间】:2021-09-2612:55:06【问题描述】:此图是否正确表示节点js服务器中的io和套接字?我想说的是......首先我们写-constio=require("socket.io")(8080);... 查看详情

在 socket.io 的情况下出现错误“XMLHttpRequest 无法加载 /socket.io”

】在socket.io的情况下出现错误“XMLHttpRequest无法加载/socket.io”【英文标题】:Gettingerror\'XMLHttpRequestcannotload/socket.io\'incaseofsocket.io【发布时间】:2015-05-0506:25:14【问题描述】:我收到错误消息:“XMLHttpRequestcannotload/socket.io”forsock... 查看详情

( Socket.io ) 一个socket连接多个房间

】(Socket.io)一个socket连接多个房间【英文标题】:(Socket.io)Onesocketconnectionmultiplerooms【发布时间】:2016-12-1405:28:53【问题描述】:我在使用socket.io时遇到问题。我尝试创建一个连接到多个房间的单套接字连接。这是我当前的代码:... 查看详情

带有非 socket.io 服务器的 Socket.io 客户端

】带有非socket.io服务器的Socket.io客户端【英文标题】:Socket.ioclientwithnon-socket.ioserver【发布时间】:2016-04-2315:35:03【问题描述】:我尝试使用socket.io客户端连接到non-socket.iowebsocket服务器。但我做不到。我正在尝试像这样连接到套... 查看详情

socket.io:io.origins 不是函数

】socket.io:io.origins不是函数【英文标题】:socket.io:io.originsisnotafunction【发布时间】:2021-02-1916:36:35【问题描述】:我正在尝试为我的socket.ionodejs服务器启用跨域同域请求,但由于某种原因它一直告诉我io.origins不是函数?vario=req... 查看详情

如何确保 socket.io 服务器已收到 socket.io-client 消息? [复制]

】如何确保socket.io服务器已收到socket.io-client消息?[复制]【英文标题】:Howtoensureasocket.io-clientmessagehasbeenreceivedbysocket.ioserver?[duplicate]【发布时间】:2018-01-1904:46:24【问题描述】:有没有办法确保socket.io服务器接收到socket.io-client... 查看详情

在 android 上解析 socket.io 数据。 (Gottox Socket.IO)

】在android上解析socket.io数据。(GottoxSocket.IO)【英文标题】:Parsesocket.iodataonandroid.(GottoxSocket.IO)【发布时间】:2014-12-2219:45:33【问题描述】:我使用的是node.js服务器,并使用了Socket.IO聊天示例作为Android参考。这是我的app.js文件中... 查看详情

socket.io(转载)

socket.io中文手册,socket.io中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html服务端io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socketio.sockets.emit(‘String’,data);//给所有客户端广播消息io.socket 查看详情

socket.io快入入门案例

socket.io基本介绍创建一个nodejs项目步骤1:创建项目目录步骤2:初始化nodejs项目目录结构命令:npminit-f结果如下:在nodejs项目安装socket.io模块命令:npminstallsokcet.iosocket.io网站:https://socket.io/socket.io快速入门案例客户端:index.html&l... 查看详情

socket.io - socket.emit、socket.on、socket.send

】socket.io-socket.emit、socket.on、socket.send【英文标题】:socket.io-socket.emit,socket.on,socket.send【发布时间】:2013-05-1213:26:43【问题描述】:基于socket.iohttp://socket.io/#how-to-use的官方网站,我找不到任何术语。socket.emit、socket.on和socket.send... 查看详情

Socket.io 错误处理

】Socket.io错误处理【英文标题】:Socket.ioerrorhandling【发布时间】:2012-11-1503:52:19【问题描述】:我遇到了Socket.IO的问题。我正在尝试在套接字错误后重新连接套接字,但它不会重新连接。代码如下:socket=io.connect(host,options);socket... 查看详情