我正在学习节点和socket io。我一直在看教程,一开始很好,但是,他们开始混淆使用socket.on(), socket.emit()
和io.on(), io.emit()
。这似乎很令人困惑。谁能明确我的概念,在哪里使用io
和在哪里使用socket
在nodejs?
逻辑上认为io
是顶级套接字。IO引擎管理器。如果你想在顶层做一些事情,要么创建某种资源,比如socket
,要么创建一个新的命名空间对象,要么向命名空间中的所有现有连接发送消息,那么你可以使用io
。
一旦你创建了像套接字这样的资源,你就可以使用这个对象本身来对它进行操作。
在服务器上,当您想要侦听新连接或想要向所有连接广播时,您可以使用io
。你还可以用它做一些其他的事情。
在客户端,当您想连接到服务器时,您使用io
。
当您想要与一个特定的连接通信时,您可以使用socket
,因为该连接由socket
对象表示。因此,每个客户端连接都有一个socket
对象,您通过使用socket
对象上的方法向该客户端发送或接收信息。
因此,const socket = io.connect(url)
或作为快捷方式const socket = io(url)
将客户端连接到服务器并为您提供客户端socket
对象。
io.on('connection, socket => { ... })
将在服务器上侦听传入的客户端连接,并为该新连接提供socket
。
socket.emit()
发送消息到特定套接字的另一端(无论是客户端还是服务器端)。
服务器上的io.emit()
向所有当前连接的客户端发送消息(技术上所有连接到顶级io
命名空间的客户端-可以有其他命名空间)。