Socket.IO 是一个库,可以在客户端和服务器之间实现低延迟、双向和基于事件的通信。它建立在 WebSocket 协议之上,并提供额外的保证,例如回退到 HTTP 长轮询或自动重新连接。

几种可用的 Socket.IO 服务器实现:

Java:https://github.com/mrniko/netty-socketio
Java:https://github.com/trinopoty/socket.io-server-java
Python:https://github.com/miguelgrinberg/python-socketio
Golang:https://github.com/googollee/go-socket.io

客户端实现:

Java:https://github.com/socketio/socket.io-client-java
C++:https://github.com/socketio/socket.io-client-cpp
swift:https://github.com/socketio/socket.io-client-swift
Python:https://github.com/miguelgrinberg/python-socketio
.Net:https://github.com/doghappy/socket.io-client-csharp
Server (based on websocket的例子):

import { WebSocketServer } from "ws";const server = new WebSocketServer({ port: 3000 });server.on("connection", (socket) => {// send a message to the clientsocket.send(JSON.stringify({type: "hello from server",content: [ 1, "2" ]}));// receive a message from the clientsocket.on("message", (data) => {const packet = JSON.parse(data);switch (packet.type) {case "hello from client":// ...break;}});
});

Client:

const socket = new WebSocket("ws://localhost:3000");socket.addEventListener("open", () => {// send a message to the serversocket.send(JSON.stringify({type: "hello from client",content: [ 3, "4" ]}));
});// receive a message from the server
socket.addEventListener("message", ({ data }) => {const packet = JSON.parse(data);switch (packet.type) {case "hello from server":// ...break;}
});

基于Socket.IO的例子:

import { Server } from "socket.io";const io = new Server(3000);io.on("connection", (socket) => {// send a message to the clientsocket.emit("hello from server", 1, "2", { 3: Buffer.from([4]) });// receive a message from the clientsocket.on("hello from client", (...args) => {// ...});
});
import { io } from "socket.io-client";const socket = io("ws://localhost:3000");// send a message to the server
socket.emit("hello from client", 5, "6", { 7: Uint8Array.from([8]) });// receive a message from the server
socket.on("hello from server", (...args) => {// ...
});

这两个示例看起来非常相似,但实际上 Socket.IO 提供了附加功能,这些功能隐藏了在生产环境中运行基于 WebSockets 的应用程序的复杂性。

Features特点:Here are the features provided by Socket.IO over plain WebSockets:

  • HTTP long-polling fallback
  • Automatic reconnection
  • Packet buffering
  • Acknowledgements
  • Broadcasting
  • Multiplexing

Socket.io与websocket的不同:尽管 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输,但它为每个数据包添加了额外的元数据。 这就是为什么 WebSocket 客户端将无法成功连接到 Socket.IO 服务器,而 Socket.IO 客户端也将无法连接到普通 WebSocket 服务器。

Socket.IO 不能在移动应用程序的后台服务中使用。Socket.IO 库保持与服务器的开放 TCP 连接,这可能会导致用户消耗大量电池。 请为此用例使用 FCM 等专用消息传递平台。

socket.io介绍相关推荐

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

    一.基本介绍 WebSocket是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯.而Socket.IO是一个完全由JavaScript实现.基于Node.js.支持WebSocket ...

  2. 突袭HTML5之WebSocket入门3 - 通信模型socket.io

    为什么需要socket.io? node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一,为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程 ...

  3. Nodejs实时通讯 在线聊天室(Socket.io)_收藏

    前言 网络聊天室在web1.0的时代就出现了,但当时技术支持比较有限,大都是通过浏览器插件BHO,JavaApplet,Flash实现的.如今HTML5技术风起云涌,通过websocket实现的网络聊 ...

  4. Socket.IO for Unity 简要介绍

    在项目中使用到了Socket.IO for unity这个Asset Store上免费的库,这里将简要的介绍一下它的结构,已经使用中的注意事项. 目录结构 上面为包的目录结构,简单的介绍一下具体的内容 ...

  5. 基于socket.io的php扩展介绍---phpsocket.io

    工具地址:https://github.com/walkor/phpsocket.io phpsocket.io是由workerman根据socket.IO扩展的用于php服务端通讯组件,后台服务用w ...

  6. Socket.io使用介绍

    如何使用 安装 npm install socket.io 与Node http server联合使用 Server(app.js) var app = require('http').createS ...

  7. socket.io实现在线群聊

    我自己在用socket.io开发,对官方网站上的文档,进行简单的整理,然后自己写了一个简单的聊天程序.最最开始 先安装socket.io: npm install socket.io 利用Node的搭 ...

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

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

  9. Netty之WebSocket和四种IO介绍

    Netty简介 一.什么是netty? 高性能 事件驱动 异步非堵塞 基于NIO的客户端,服务器端编程框架 稳定性和伸缩性 二.Netty的使用场景 高性能领域   多线程并发领域   异步通信领域 ...

最新文章

  1. 工业4.0,人工智能狂潮正在席卷制造业 | 500强系列报告
  2. Leetcode 1 Two Sum
  3. linux CentOs 权限导致的Apache - DocumentRoot must be a directory的解决方案
  4. Linux下安装zookeeper集群(奇数个)
  5. lammps软件_Lammps模型构建的方法之一:组合模型构建
  6. php-fpm 的参数,php-fpm启动参数配置详解
  7. 2018年全国高校教师“Python编程、应用及华为大数据”培训班
  8. 云服务器发送开锁信息给单车,云服务器发送开锁信息给单车
  9. 暴风php视频怎么打开,暴风下载的视频怎样转换视频格式
  10. MATLAB画图函数plot简单用法
  11. HTML5期末大作业:仿天猫购物网站设计——仿天猫购物商城(7页) 网页设计作业,网页制作作业, 学生网页作业, 网页作业成品, 网页作业模板
  12. VLAN-TAG 知识相关
  13. 女生更多!统计局:2019年高等教育在校生中女研究生占比过半
  14. SPI FLASH 波形测量演示实例
  15. D3基础 | 条形图
  16. 老人与海好词100英文带翻译_英文版《老人与海》小说中优美语句50句
  17. 【斯坦福21秋(李沐)】实用机器学习(学习笔记)——1.1课程介绍
  18. 2014华为南研所实习生求职
  19. matlab拟合数据并输出公式,曲线拟合以及生成公式
  20. Docker从入门到进阶之基础操作(3)—— 仓库(Repository)

热门文章

  1. canvas 签名/书写
  2. hph smarty下载地址
  3. 喜讯:乔迁至CSDN
  4. 使用uiautomator做UI测试
  5. 精通Web Analytics 2.0 (12) 第十章:针对潜在的网站分析陷阱的最佳解决方案
  6. CentOS8安装Git客户端
  7. mysql isempty函数_判空使用isEmpty()方法?这个开发常识你别说自己不知道
  8. LIRe:Lucene图像检索 - 可扩展Java CBIR库
  9. 电厂技术监督管理系统:技术监督计划在线制定,技术监督整改闭环管控
  10. web安全测试学习笔记(一)之环境搭建:OWASP_Broken_Web_Apps靶机