使用websockets以及PHP和MySQL脚本的最佳方法是什么?
如果我想在我的PHP网站上添加实时聊天,或者在实时执行X动作时将变量存储到MySQL数据库(例如,用于RPG网站交易)。
我找到了Ratchet,这是有效实现这些目标的好选择吗?也许同时使用Node.js和PHP?我不知道该怎么做。
答案 0 :(得分:3)
我将Node.js与PHP结合使用。
基本上,它的工作原理如下。
Apache / php根据请求向客户端发送页面。它包含一个身份验证令牌。
浏览器初始化socket.io并将令牌发送回节点js服务器。然后,节点将令牌发送到Apache服务器的私有API(如果愿意),请求用户需要上下文(例如用户ID)。当节点返回时,它将其存储在"connection ID" => "user ID"
表中。 (或路由表(哈希映射的特定术语))
如果用户向另一个用户发送“聊天”消息,则通过ajax转到Apache,执行数据库/处理,然后将其传递回后端的Node.js,后者将用户ID插入到路由表并将消息发送到用户浏览器。
我无法发布代码,因为这可能会在某些时候用于生产,但这就是我使用基于LAMP的服务器的方式。
注意:您需要为此实现一个字符串帐户管理系统,并且我为自己的帐户处理系统实现了这个概念,因此在我的情况下它非常适用于应用程序。
对令牌的需求是为了安全。例如,该令牌可以是会话ID。可以在后端获取用户ID但不能在前端获取的东西。它应该定期更改。这样,如果它受到攻击,攻击者将无法长时间连接到实时会话,或者根本无法连接。
这个概念可以改进。例如每请求令牌,它在每次只能使用一次的请求上发生变化。这是我正在使用的实时通知系统。