socket.io-第一步
#教程 #node #braziliandevs #socketio
自Web开发以来,许多开发人员带来了与事件解火有关的几种障碍。甚至在管理应用程序状态的各种框架之前,与仅抓住XMLTTPRequest的应用程序的框架相同,以使其本身和第三方均为异型请求。但是,在某些应用程序中,我们希望控制状态并生成我们的事件,在客户端和服务器之间创建一个集成,而不是仅仅从API中进行集成。为此, socket.io 可以为我们提供很多帮助。

但是什么是socket.io?

socket.io是一个库,允许服务器与客户端与最佳且长度低的服务器和事件之间的交流。在Websocket上构建,它允许以最低成本向服务器重新连接和发送客户端之间的软件包。

socket.io对各种语言有支持:

  • javascript
  • java
  • python
  • Golang
  • net
  • C ++
  • Swift
  • Rust
  • kotlin ...

看到了这一点,让我们使用 node.js 进行小简介。我们必须使用socket.io的最简单示例是创建聊天室。这是因为我们实时有几个客户之间的消息传递应用程序,他们的通信必须通过服务器,要么以进行管理或保存在某些数据库中。

,但我们不需要保存在数据库中即可提供真实的时间通信。我们只需要与socket.io

创建一个基于事件的通信

让我们转到代码

服务器端

首先,我们为后端创建了HTTP服务器

// server.js
const http = require('http');
server = http.createServer(app); 

然后,让我们创建一个名为room.js的新文件,我们将在其中留下所有的socket.io事件,让我们告诉我们的服务器,当连接时,我们的事件将在此文件中没有管理。

// server.js
const io = require('socket.io')(server);
const Room = require('./Room')(io);
server.listen(port, () => console.log("Chat online"));

现在,我们可以创建Room.js文件以集中我们的事件。现在,让我们开始使用socket.io使用两个妈妈: on emit

母亲©all 是整个母亲,他说您想收到的活动以及与之相关的信息和卡是什么。基本上是用作其收件箱的座右铭。

母亲©todo 发射,相反,整个母亲向事件发出消息并发送信息。基本上,所有用作Saãda盒子的东西。

关联两个妈妈,您可以在客户端和服务器端都具有同时具有示例性,如果您将服务器端全部放在和客户端端,我们都有


   // server-side
   socket.on('mensagem', function(texto) {
       console.log(texto);
   });
   // client-side
   socket.emit('mensagem', 'Olá pessoas desenvolvedoras do tabnews');

这意味着目前我们有了客户的方式,无论是按按钮还是任何其他互动,我们都在消息的后端打印了开发人员,来自TabNews

socket.io如何知道在哪里指导?

为活动的名称而言,消息,您选择了。在Mães©All Emit中,我们将其名称称为事件的名称和一些信息,在座右铭中,我们具有相同的事件名称,并且可以作为Parano接收的函数,座右铭的所有其他部分©全部发出。酷没有?

现在,一些更高级的知识。在socket.io,我们有房间的概念。可以将每个客户定向到房间的地方,并且可以将消息引导到房间和某些特定的客户。这样,我们还有03个有趣的妈妈:加入,离开和前往。

母亲©all 加入可以将客户引导到房间。它的构造只是指示房间的名称。所以我们有:

socket.join(nomeDaSala);

母亲©todo 离开可以使母亲的对立©所有人加入,即从某个房间带走客户。所以我们有:

socket.leave(nomeDaSala);

母亲©all to ,最后用来在特定房间内发送消息。它与所有排放量结合在一起,但确保只有关联的客户是特定的房间。所以我们有:

socket.to(nomeDaSala).emit('mensagem', 'Olá pessoas desenvolvedoras do tabnews');

操作的其余部分相同。将这个上下文带到我们的 room.js ,我们有以下代码块


 function listen(socket){
    const io = _io;

    socket.on('join', function(sala){
        socket.join(sala);
    });

    socket.on('leave', function(sala){
        socket.leave(sala);
    });

    socket.on('mensagem', function(Sala, Mensagem){
        socket.to(Sala).emit('msg', Mensagem);
    });
 }

module.exports = function(io){
    _io = io;
    return {listen};
};

客户端

现在,对于我们的客户端,我们基本上都有所有相同的事件,但具有反向构造。一方面我们有另一侧的地方。

 socket.on('msg', function(Mensagem){
     // Código relacionado a receber uma mensagem no cliente.
 });

 socket.emit("join",nomeDaSala);

 socket.emit("leave", nomeDaSala);

repositã³rio完成

为了促进吸收,我留下了一个现成的存储库,例如带有socket.io的基本聊天室。我没有使用很多框架,并且要被吸收,无论您使用的前端技术如何,我都以更易于理解的jQuery做到了。

Bate-Papo

O repositório pode ser encontrado aqui.

我还能使用socket.io

做什么

尽管聊天室是使用此库最多的示例,但我们可以用socket.io

制作许多苹果
  • 在线游戏
  • SIP服务器(VoIP)
  • webrtc ...

即使使用socket.io,我们也可以执行一些非常有趣的功能克隆,例如软件克隆,例如:


  • Discord
  • Zoom
  • 抽搐

但是这些克隆和Webrtc的解释,如果您喜欢的话,我们将其留在附近。


我希望你喜欢它。良好的研究