【发布时间】:2023-03-06 07:01:01
【问题描述】:
我在客户端和服务器端都使用socket.io。这是一个很棒的库,但我必须说文档中没有描述默认行为,这使得使用该库变得如此混乱。至少我没有找到默认行为的任何参考。
基本上,我观看了教程,其中使用 socket.io 构建了一个基本的聊天应用程序。在教程中,服务器会自动向所有连接的客户端发送消息。这是服务器端的默认行为吗?
对此我不确定。我正在开发一个应用程序,用户可以(取消)订阅特定主题并从服务器接收值。假设我有两个主题(topic1 和 topic2)。 我打开了两个客户端(client1 和 client2)并从 client1 订阅了 topic1。我注意到我在 client1 中收到了 topic1 的 value1,但 client2 什么也没收到。
const io = require('socket.io')(3000); // create server
io.on('connection', socket => {
console.log("client is connected over sockets");
socket.on('subscribe', () => {socket.emit('send-msg', "send to client");})
});
在上面的这种情况下,服务器将发送给所有客户端还是只发送给一个客户端。 您能否向我澄清一下,并告诉我 socket.io 的默认行为是什么?
PS:关于 socket.io,我注意到的另一件事是,有很多方法可以做同样的事情,而且没有很好的文档记录。例如,我正在使用 socketIOClient 函数实例化一个客户端:const socket = socketIOClient("my_host"); 但我已经看到许多使用openSocket 函数甚至直接使用io 函数的教程(出于某种原因,作者在 html 中添加了这个<script defer src="http://localhost:3000/socket.io/socket.io.js"></script>)
所有这些功能都做同样的事情,对吧?
【问题讨论】:
标签: javascript node.js reactjs sockets socket.io