Nodejs中socket.io和engin.io有什么联系呢?都没人翻译socket.io的文档哦……英语渣渣看起来好难……

Nodejs中socket.io和engin.io有什么联系呢?都没人翻译socket.io的文档哦……英语渣渣看起来好难……

socket.io和engin.io有什么联系呢?都没人翻译socket.io的文档哦……英语渣渣看起来好难……

2 回复

Node.js 中 Socket.ioEngine.io 有什么联系呢?都没人翻译 socket.io 的文档哦……英语渣渣看起来好难……

首先,让我们来了解一下 socket.ioengine.io 的关系。socket.io 是一个流行的实时通信库,用于在浏览器和服务器之间建立 WebSocket 连接。而 engine.iosocket.io 底层使用的协议引擎,负责处理连接、重连以及跨域等问题。

简单来说,engine.io 提供了一个基础框架,使得 socket.io 能够更方便地实现高级功能,如实时通信、数据传输等。你可以把 engine.io 想象成 socket.io 的基础设施,它确保了连接的稳定性和可靠性。

示例代码

下面是一个简单的示例,展示了如何使用 socket.ioengine.io 来实现基本的实时通信功能:

  1. 安装依赖

    首先,你需要安装 socket.ioengine.io 相关的依赖包:

    npm install socket.io engine.io
    
  2. 服务器端代码

    创建一个简单的服务器端代码,使用 socket.ioengine.io

    // server.js
    const http = require('http');
    const { Server } = require("socket.io");
    const { createEngine } = require('engine.io');
    
    const app = http.createServer();
    const io = new Server(app, {
      engine: createEngine()
    });
    
    io.on('connection', (socket) => {
      console.log('a user connected');
      
      socket.on('disconnect', () => {
        console.log('user disconnected');
      });
      
      socket.on('chat message', (msg) => {
        console.log('message: ' + msg);
        io.emit('chat message', msg); // 广播消息给所有客户端
      });
    });
    
    app.listen(3000, () => {
      console.log('listening on *:3000');
    });
    
  3. 客户端代码

    创建一个简单的客户端代码,与服务器进行实时通信:

    <!DOCTYPE html>
    <html>
    <head>
      <title>Socket.io Example</title>
      <script src="/socket.io/socket.io.js"></script>
      <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    </head>
    <body>
      <input id="input" type="text">
      <button onclick="sendMessage()">Send</button>
      <ul id="messages"></ul>
    
      <script>
        var socket = io();
    
        function sendMessage() {
          var message = $('#input').val();
          socket.emit('chat message', message);
          $('#input').val('');
        }
    
        socket.on('chat message', function(msg) {
          $('#messages').append($('<li>').text(msg));
        });
      </script>
    </body>
    </html>
    

通过上述代码,你可以看到 socket.io 如何利用 engine.io 的底层功能来实现客户端和服务器之间的实时通信。希望这能帮助你理解 socket.ioengine.io 之间的关系,并解决你的疑问。


Socket.IOEngine.IO 之间有着紧密的关系。Socket.IO 是一个更高级的库,用于实时双向通信。而 Engine.IO 则是 Socket.IO 的底层实现,负责处理 WebSocket 连接以及兼容其他传输方式(如长轮询)。

Engine.IO 提供了基础的连接、重连、分块等功能,而 Socket.IO 在此基础上增加了更多的应用层功能,例如自动选择传输方式、发送和接收 JSON 数据等。

以下是一个简单的示例,展示如何使用 Socket.IO 来建立一个基本的 WebSocket 应用:

// 服务端代码
const io = require('socket.io')(3000); // 创建 Socket.IO 实例并监听 3000 端口

io.on('connection', (socket) => {
    console.log('New client connected');
    
    socket.on('message', (data) => {
        console.log('Message received:', data);
        socket.emit('response', 'Hello from server!'); // 向客户端发送消息
    });

    socket.on('disconnect', () => {
        console.log('Client disconnected');
    });
});

// 客户端代码
<script src="/socket.io/socket.io.js"></script>
<script>
    const socket = io('http://localhost:3000');

    socket.on('connect', () => {
        console.log('Connected to server');
        socket.emit('message', 'Hello from client!');
    });

    socket.on('response', (data) => {
        console.log('Server response:', data);
    });

    socket.on('disconnect', () => {
        console.log('Disconnected from server');
    });
</script>

这段代码创建了一个简单的 WebSocket 服务器,监听来自客户端的消息,并通过 Socket.IO 发送响应。客户端通过 Socket.IO 连接到服务器,并在接收到响应时打印日志信息。

希望这对您有所帮助!

回到顶部