zoukankan      html  css  js  c++  java
  • Socket.IO 中文笔记

    Socket.IO 由两部分组成

    1. 与Node.JS HTTP Server集成(或安装)的服务器
    2. 在浏览器端加载的客户端库

    主要特性

    可靠性

    因为防火墙会关闭长时间处于非活跃状态的连接而导致socket连接中断,通过心跳机制可以保持长连接。

    自动重新连接支持

    除非得到指示,客户端会一直尝试重新连接到服务器,直到连接成功

    断线检测

    在Engine.IO层实现心跳机制,允许服务器和客户端知道另一个机制何时不响应

    通过在服务器和客户端上设置定时器来实现该功能,在连接握手期间共享超时值(pingInterval和pingTimeout参数)

    二进制支持

    可以发出任何可序列化的数据结构

    多路复用支持

    为了在应用程序中创建关注点分离(例如,每个模块或基于权限),Socket.IO允许您创建多个命名空间,这些命名空间将充当单独的通信通道,但将共享相同的底层连接。

    房间支持

    在每个命名空间中,您可以定义套接字可以加入和离开的任意通道,称为Rooms。 然后,您可以广播到任何给定的房间,到达已加入它的每个套接字。

    这是一个非常有用的功能,可以将通知发送给一组用户,或者发送给连接在多个设备上的给定用户。

    这些功能带有一个简单方便的API,如下所示:

    io.on('connection', function(socket){
      socket.emit('request', /* */); // emit an event to the socket
      io.emit('broadcast', /* */); // emit an event to all connected sockets
      socket.on('reply', function(){ /* */ }); // listen to the event
    });
    

    Socket.IO不是WebSocket实现。 尽管Socket.IO确实在可能的情况下使用WebSocket作为传输,但它会为每个数据包添加一些元数据:数据包类型,命名空间和需要消息确认时的确认ID。 这就是为什么WebSocket客户端无法成功连接到Socket.IO服务器,并且Socket.IO客户端也无法连接到WebSocket服务器。

    Socket.IO允许您发出和接收自定义事件。 除了连接,消息和断开连接,您还可以发出自定义事件

  • 相关阅读:
    第一课 进阶高手的大门
    Codeforces Round #363 (Div. 2) C. Vacations
    HDU 5718 Oracle
    A
    Fibonacci数的后9位
    UESTC 982质因子分解
    UESTC149 解救小Q
    UESTC93 King's Sanctuary
    HDU 4857 逃生
    L1-006. 连续因子
  • 原文地址:https://www.cnblogs.com/goOtter/p/10113246.html
Copyright © 2011-2022 走看看