向一组用户而不是所有在php中使用Websocket的用户显示消息

Pradeepta

我正在开发一个在线视频聊天应用程序,一组用户可以在其中查看消息并将消息发送到他们所在的模型室。为此,我正在使用websocket和php。

但是,当用户发送任何消息时,它将发送给所有用户,而不是他/她所在的房间。下面是我的示例代码。

function send_message($msg) {
    global $clients;
    foreach ($clients as $changed_socket) {
        @socket_write($changed_socket, $msg, strlen($msg));
    }
    return true;
}

请提供您宝贵的反馈意见。

格迪朋克

从提供的代码来看,您的$clients阵列似乎仅持有该特定连接的套接字句柄。

在服务器中找到具有功能的行socket_accept()它可能看起来像:

$clients[] = socket_accept($socket);

对于快速而肮脏的修复程序,我个人的选择是按以下方式进行更改:

$handle = socket_accept($socket);
$client = array('handle' => $handle,
                'rooms' => array(),
                // additional properties...
               );
$clients[] = $client;

然后,当您要将消息发送到特定房间时:

function send_message($message, $handle) {
    socket_write($handle, $message, strlen($message);
}

function broadcast($message, $room = null) {
    global $clients;
    foreach ($clients as $client) {
        if (is_null($room) || in_array($room, $client['rooms'])) {
            send_message($message, $client['handle']);
        }
    }
}

broadcast('This message will only go to users in the room "lobby"', 'lobby');
broadcast('This message will go to everybody on the server.');

更好的长期解决方案是创建用户类并保留实例列表,但基本原理是相同的:将句柄分配给属性,而不是将句柄传递给原始对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向同一用户组内的所有用户广播消息

来自分类Dev

禁用一组用户的所有MediaWiki特殊页面

来自分类Dev

向一组用户发送私人消息(Discord.js)

来自分类Dev

在Spring中使用STOMP和WebSocket向特定用户发送消息时检查身份验证

来自分类Dev

如何实现向某些用户而不是所有套接字发送消息

来自分类Dev

将一个组中的所有用户添加到另一组中?

来自分类Dev

如何设计模式,向其所有者显示消息,但如果未指定所有者,则向所有用户显示?

来自分类Dev

向node.js中一个特定用户的所有套接字发出消息

来自分类Dev

PHP将一组日期之间的所有日期显示为列表

来自分类Dev

向所有用户发送的GCM消息(无主题)

来自分类Dev

如何向Websocket用户发送AJAX消息

来自分类Dev

如何使用消息 api 向所有用户发送 firebase 推送通知

来自分类Dev

角度指令向所有字段显示消息,而不是向特定字段显示消息?

来自分类Dev

如何使用JMS和MDB向特定用户和所有用户发送消息和通知?

来自分类Dev

如何使用VBA Excel代码向具有过期信息的用户显示弹出消息

来自分类Dev

删除具有组ID作为用户主要组的非唯一组

来自分类Dev

Ansible成为一组任务的用户

来自分类Dev

如何用一个命令显示所有注册用户及其组?

来自分类Dev

Oracle向一组用户和某些数据授予特权

来自分类Dev

Powershell脚本显示组AD中的所有用户

来自分类Dev

递归显示用户是其成员的所有Active Directory组

来自分类Dev

Powershell脚本显示组AD中的所有用户

来自分类Dev

如何使用npm库Telegraf从数据库中的ID列表一次向所有电报bot用户发送消息

来自分类Dev

不向所有用户显示该消息吗?(laravel)

来自分类Dev

如何使用命令显示所有用户和组?

来自分类Dev

如何使用命令显示所有用户和组?

来自分类Dev

如何使用用户定义的相等函数在Javascript中创建一组用户定义的对象?

来自分类Dev

使用signalR仅向一个用户发送消息

来自分类Dev

在用户表中对一组用户进行排序

Related 相关文章

  1. 1

    向同一用户组内的所有用户广播消息

  2. 2

    禁用一组用户的所有MediaWiki特殊页面

  3. 3

    向一组用户发送私人消息(Discord.js)

  4. 4

    在Spring中使用STOMP和WebSocket向特定用户发送消息时检查身份验证

  5. 5

    如何实现向某些用户而不是所有套接字发送消息

  6. 6

    将一个组中的所有用户添加到另一组中?

  7. 7

    如何设计模式,向其所有者显示消息,但如果未指定所有者,则向所有用户显示?

  8. 8

    向node.js中一个特定用户的所有套接字发出消息

  9. 9

    PHP将一组日期之间的所有日期显示为列表

  10. 10

    向所有用户发送的GCM消息(无主题)

  11. 11

    如何向Websocket用户发送AJAX消息

  12. 12

    如何使用消息 api 向所有用户发送 firebase 推送通知

  13. 13

    角度指令向所有字段显示消息,而不是向特定字段显示消息?

  14. 14

    如何使用JMS和MDB向特定用户和所有用户发送消息和通知?

  15. 15

    如何使用VBA Excel代码向具有过期信息的用户显示弹出消息

  16. 16

    删除具有组ID作为用户主要组的非唯一组

  17. 17

    Ansible成为一组任务的用户

  18. 18

    如何用一个命令显示所有注册用户及其组?

  19. 19

    Oracle向一组用户和某些数据授予特权

  20. 20

    Powershell脚本显示组AD中的所有用户

  21. 21

    递归显示用户是其成员的所有Active Directory组

  22. 22

    Powershell脚本显示组AD中的所有用户

  23. 23

    如何使用npm库Telegraf从数据库中的ID列表一次向所有电报bot用户发送消息

  24. 24

    不向所有用户显示该消息吗?(laravel)

  25. 25

    如何使用命令显示所有用户和组?

  26. 26

    如何使用命令显示所有用户和组?

  27. 27

    如何使用用户定义的相等函数在Javascript中创建一组用户定义的对象?

  28. 28

    使用signalR仅向一个用户发送消息

  29. 29

    在用户表中对一组用户进行排序

热门标签

归档