socket.io分析

一、socket.io介绍

socket.io是一个基于WebSocket的CS的实时通信库,他底层基于engine.io。engine.io使用WebSocket和xhr-poling(或jsonp)封装了一套自己的协议,在不支持WebSocket的低版本浏览器中使用了长轮询(long poling)来代替。socket.io在engine.io的基础上增加了namespace,room,自动重连等特性。(socket.io是一个库,一个基于engine.io协议(封装了webSocket协议)的库,在协议上创建了Engine.io引擎,socket.io则是该引擎的应用层框架)

二、WebSocket介绍(请看下面这个链接)

WebSocket详细介绍_码农sssss的博客-CSDN博客

三、socket.io相对比原生webSocket的一些特性

长轮询回退:如果无法建立webSocket链接,socket.io将会退回http长轮询进行连接,这也是为了兼容一些特别老的项目和极少数不支持的浏览器(现如今)

自动连接:在一些情况下,连接某一方面有可能在不知情的情况下断开,他有一个心跳机制,可以定时去检测是否连接,只要不是客户端主动关闭连接,socket.io就会在连接出错后不断重试以建立连接,服务端数据会进行自动缓冲,直到再次链接,为了防止断开时间过长,缓冲时间过长,可以利用使用Socket实例的connected属性进行处理,或者使用Volatile事件,使服务端丢弃原来的缓冲,只返回最新的数据。

多路复用:Socket.io允许你在单个共享链接上创建多个namespace,这些namespace拥有单独的通信通道(room)

支持Room功能:

四、socket.io 的使用

安装 socket.io

在开始使用 socket.io 之前,首先需要安装它。可以通过 npm 包管理器进行安装,只需执行以下命令:

npm install socket.io

创建一个简单的聊天应用

接下来,我们将通过创建一个简单的聊天应用来演示 socket.io 的使用。

 服务器端代码
const io = require('socket.io')(http);

io.on('connection', (socket) => {
  console.log('A user connected');

  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });

  socket.on('disconnect', () => {
    console.log('A user disconnected');
  });
});
客户端代码
<script src="/socket.io/socket.io.js"></script>
<script>
  const socket = io();

  $('form').submit((e) => {
    e.preventDefault();
    socket.emit('chat message', $('#message-input').val());
    $('#message-input').val('');
    return false;
  });

  socket.on('chat message', (msg) => {
    $('#messages').append($('<li>').text(msg));
  });
</script>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Socket.IO是一个实时应用程序框架,它允许服务器和客户端之进行双向通信。它提供了一种简单而强大的方式来构建实时应用程序,包括聊天应用、实时分析、实时协作等。 UniApp是一个基于Vue.js的跨平台开发框架,可以同时开发iOS、Android和Web应用。它提供了一套统一的API和组件,使得开发者可以使用一套代码构建多个平台的应用。 在UniApp中使用Socket.IO,你可以通过以下步骤进行配置和使用: 1. 安装Socket.IO库:在UniApp项目中,可以使用npm或者yarn安装Socket.IO库。在项目根目录下执行以下命令: ``` npm install socket.io-client ``` 2. 创建Socket.IO实例:在需要使用Socket.IO的页面或组件中,引入Socket.IO库,并创建一个Socket.IO实例。示例代码如下: ```javascript import io from 'socket.io-client'; // 创建Socket.IO实例 const socket = io('http://your-server-url'); ``` 3. 监听事件:通过Socket.IO实例,你可以监听服务器发送的事件,并在事件触发时执行相应的逻辑。示例代码如下: ```javascript // 监听服务器发送的消息事件 socket.on('message', (data) => { console.log('收到消息:', data); }); ``` 4. 发送事件:通过Socket.IO实例,你可以向服务器发送事件,并传递相应的数据。示例代码如下: ```javascript // 发送消息事件 socket.emit('message', 'Hello, server!'); ``` 这样,你就可以在UniApp中使用Socket.IO进行实时通信了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值