但是什么是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
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做到了。
O repositório pode ser encontrado aqui.
我还能使用socket.io
做什么尽管聊天室是使用此库最多的示例,但我们可以用socket.io
制作许多苹果- 在线游戏
- SIP服务器(VoIP)
- webrtc ... li>
即使使用socket.io,我们也可以执行一些非常有趣的功能克隆,例如软件克隆,例如:
- Discord
- Zoom
- 抽搐
但是这些克隆和Webrtc的解释,如果您喜欢的话,我们将其留在附近。
我希望你喜欢它。良好的研究