socket.broadcast.to()。emit()与socket.to()。emit()

时间:2019-08-12 09:11:55

标签: sockets websocket socket.io

两者之间有什么区别

  

socket.broadcast.to()。emit()

  

socket.to()。emit()

socket.io cheat sheet上显示

  socket.to('game').emit('nice game', "let's play a game"); // sending to all clients in 'game' room except sender

然后在this tutorial blog中说:

socket.broadcast.to('game').emit('message', 'nice game'); //sending to all clients in 'game' room(channel) except sender
socket.to('game').emit('message', 'enjoy the game'); //sending to sender client, only if they are in 'game' room(channel)

所以现在我真的很困惑。

  1. 其中一种解释是错误的吗?

  2. 发送给发件人客户端的东西是什么,只有当他们在“游戏”房间(频道)中时才发是什么意思?这是否意味着如果是群聊,只有一个人(消息的发件人)会收到它?是什么意思?

  3. 如果socket.io cheatsheet是准确的,如果通过调用将发送到“游戏”室中除发件人之外的所有客户端 ,. broadcast.emit()的目的是什么? :socket.to('game').emit();socket.broadcast.emit()是否仅用于发送到同一名称空间上的所有客户端(发送方除外)?但是,如果要发送给特定房间中的所有客户(发件人除外),则使用socket.to().emit()而不是socket.broadcast.to().emit()吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

在“ https://dev.to/moz5691/socketio-for-simple-chatting---1k8n

socket.to('game')。emit('message','enjoy the game'); //仅发送给发送方客户端,前提是它们位于“游戏”房间(频道)中。

此特定发射仅在游戏室通道中从服务器发送到发送方客户端。

不过,广播 socket.broadcast.to('game')。emit('message','nice game'); 发送给“游戏”房间(通道)中的所有客户端,发件人除外。

注意到以下段落中他又解释了一个错误:

客户端-> sendMesssage->服务器

服务器<-receiveMessage-服务器

应该是客户端<-receiveMessage-服务器。

希望有帮助。