php - 在 PHP 上使用 Ratchet 和 WebSockets 进行私有(private)和群聊

标签 php websocket chat ratchet

我的目标是制作一个带有私有(private)和群聊选项的聊天应用程序。我更习惯于在 PHP 中使用 Ratchet 和 WebSockets,而不是使用 node.js,因为人们告诉我这会是最好的。

虽然我只在全局聊天的上下文中看到过 WebSockets 的例子。

我的方法是使用 WebSocket id 并将其存储在数据库中,因为当人们请求与某个人或某个组的人聊天时,我会给服务器这些 id,它只会发送给那些人

那会是正确的方法吗?有没有更好的方法来解决这个问题?

最佳答案

如果你使用 Ratchet,它是一个很好的 websocket 的 PHP 库,你还可以阅读关于 the WAMP server 的部分。 ,这是 the WAMP protocol 的实现(v1),关于在你的情况下创建多个“主题”,聊天室。

建议开始在 WAMP 协议(protocol)之上构建多 channel 聊天服务器。

在您的情况下,您还想保护您的主题。您必须以自己的方式实现此安全性,并且可能按主题限制 2 个用户...

第一种方法可能是使用 token 。当用户想与某人私下交谈时,他会创建一个带有 secret token 的私有(private) channel ,然后将这个 secret token 传达给他想要交谈的用户。所以使用WAMP协议(protocol),就像创建一个名为/chat/5sd4f5qsg8rr5sg8rg的主题有足够的 secret token 。

另一种更结构化的方法是在数据库中存储一个元组 userA/userB/主题名称,然后创建主题并只允许这两个用户加入它。
当有人加入时,通知另一个人(通过同一个 websocket 连接)他的 friend 想要交谈(或自动打开聊天窗口......)。

关于php - 在 PHP 上使用 Ratchet 和 WebSockets 进行私有(private)和群聊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109607/

相关文章:

php - 从字符串中删除空行,但每行之间允许一个空行

php - 人气算法

php - 我怎么知道客户的用户名

Python web-socket 解释(读取)数据

android - 如何为 Android 实现聊天应用程序?

php - 使用 PHP cookies 保存用户表单输入信息以供以后访问?

php - 在 IF 语句中使用 IN 参数?

python - WebSocket JWT Token 连接授权

php - 如何在 AJAX 实时聊天中实现聊天审核?

ios - 使用 Twilio 的可编程聊天时出现 401 未经授权访问