繁体   English   中英

向除发件人 socket.io 以外的所有人广播

[英]Broadcasting to everyone except sender socket.io

提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文

我正在我的应用程序中建立聊天。 我为此使用 socket.io。 当用户发送消息时,我会向我的服务器发送 api 请求。 api 将消息存储在数据库中,然后才发出,通过套接字服务向房间中的每个人提供新消息。 我有一个 SocketService class 这个方法:

  private async broadcast({ type, data, chatId, senderId }: { type: string; data: any; chatId: string; senderId: string }) {
const excludedSocket = await this.getUserSocket(senderId);
if (chatId && excludedSocket) {
  excludedSocket.emit;
} else if (excludedSocket) {
  excludedSocket.emit(type, data);
} else if (room) {
  gIo.to(room).emit(type, data);
} else {
  gIo.emit(type, data);
}

}

我遇到的问题是 getUserSocket 返回一个没有广播或方法的 RemoteSocket object。 那么我该如何实现呢?

 private async getUserSocket(userId: string) {
const sockets = await this.getAllSockets();
const socket = sockets.find((s) => s.data.uid === userId);
return socket;

}

private async getAllSockets() {
const sockets = await this.io.fetchSockets();
return sockets

}

socket.broadcast.emit等同于发送到一组空房间(意思是“所有房间”)的BroadcastOperator ,不包括发送方套接字的套接字 ID“房间”。

可以使用server.except()从服务器实例创建相同的 BroadcastOperator

const sockets = await this.io.except(socketIdString).emit('blah', x)
问题未解决?试试本站强大的搜索功能,搜索: 向除发件人 socket.io 以外的所有人广播
向/ namespace中的所有人发送Emit()-NodeJS,Socket.IO

[英]Emit() to everyone in /namespace - NodeJS, Socket.IO

我尝试了几种尝试尝试向连接到特定/ namespace的所有用户发出警报的方法,但是没有运气。 我可能会误会套接字的工作方式。 但是我现在所拥有的是两个在不同页面上打开的浏览器。 当用户连接到pageA时,该用户现在是'/ users'名称空间的一部分。 当用户连接到pageB时,该 ...

Socket.io:如何使每个人都有不同的频道?

[英]Socket.io: How to make everyone get a different channel?

我目前正在开发一个小型网站,我想让每个人都收听另一个频道,因为它就像一个在服务器端搜索内容然后回复客户端的网站。 我想到的唯一想法是这样的: 客户端: 服务器端: 但是要执行4次以上将非常困难,我敢肯定还有另一种简单的方法! 谢谢 ...

Laravel 5.3中的Socket.io和Redis广播事件

[英]Broadcasting event with Socket.io and Redis in Laravel 5.3

我正在尝试使用socket.io和Redis使用L5.3创建一个简单的事件广播选项。 一切都可以在服务器端正常运行,但不能在客户端运行。 这是我的代码。 活动代码 Socket.js 查看文件 事件触发代码 当我访问domain.app/test时 ,节 ...

向房间广播消息时的 Socket.IO / JavaScript 问题

[英]Socket.IO / JavaScript problem when broadcasting message to room(s)

我正在使用 Socket.IO(使用flask-SocketIO 的服务器)开发聊天应用程序。 用户可以创建新的频道(房间)并在它们之间切换。 在我下面的代码中,出于某种原因,每次我切换(返回)到一个房间(甚至有一个房间并“切换”回它)时,“广播消息”处理程序函数都会额外执行一次。 即,如果我在“c ...

事件广播到特定用户(socket.io,redis,node)

[英]Event Broadcasting to a Specific User (socket.io, redis, node)

我想根据用户触发的事件建立一个通知系统,并将其传递给另一个用户('X写在你的墙上)。 我理解广播事件的逻辑,但如果我广播,该消息将被发送给频道上的每个人。 我正在使用Laravel 5,我使用了Jeffrey Way的Nodejs,Redis,Socket.io教程 。 很有帮助。 ...

Socket.io-向发件人和客户端发送不同的数据?

[英]Socket.io - send different data to sender and clients?

我正在学习NodeJS和Socket.IO,并一直遵循着各式各样的教程,主要侧重于建立基本的聊天室。 我的应用程序到目前为止工作正常:能够与客户一起发送消息,并能够移至其他“房间”。 现在,我试图对其进行整理,使它看起来很重要。 我绊倒了以下想法: 当用户A从房间A移到房 ...

发送包含发件人 Socket.io 的公共消息

[英]Send public message including sender Socket.io

我从socket.io开始,我可以发送私人消息,但是如何向所有人发送消息,在以下代码(用于测试目的)中,每次用户连接时第一个用户都会收到私人消息,我如何可以将所有消息广播给包括发件人在内的所有客户端吗? 这是客户 这是服务器 ...

Socket.io 仅向发送者发回多个响应

[英]Socket.io sends back multiple responses only to the sender

所以我想深入研究 Socket.io,我是一个完整的初学者。 我是一名 react 开发人员,并决定使用 react 对其进行测试,这是我的客户端: 这是我的服务器端(节点,快递): 所以基本上当我在输入上写一些东西并单击按钮时,在节点服务器上一切似乎都很好并且消息只记录一次,但是当我打开我发送消息 ...

Socket.IO - 如何向房间里的每个人发出事件,包括发送者?

[英]Socket.IO - how to emit event to everybody in the room, including sender?

在我的 Socket.Io / Node.Js / Express 应用程序中 - 在我添加聊天室之前 - 我曾经为每个人(包括发件人)发出这样的事件: 现在我添加了房间并尝试使用 或者 但两者都只将消息发送给接收者,而不是发送者。 我应该怎么做才能让这条消息也发送到发件人,他也在聊天 ...

Broadcast.emit不排除Socket.IO中的发送者

[英]Broadcast.emit not excluding sender in Socket.IO

尝试使用socket.io和javascript显示“用户正在键入”消息。 认为这将与广播事件(在我的情况下是在输入字段上的按键操作)广播然后将数据复制到h4标签一样容易。 问题是广播。emit将“用户正在键入”文本发送给每个客户端,包括发送方。 我将在下面粘贴我的代码段。 先感谢您 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM