- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是制作一个带有私有(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/
我是一名优秀的程序员,十分优秀!