使用websockets以及PHP和MySQL脚本的最佳方法是什么?

时间:2013-11-04 17:34:35

标签: php mysql websocket ratchet

使用websockets以及PHP和MySQL脚本的最佳方法是什么?

如果我想在我的PHP网站上添加实时聊天,或者在实时执行X动作时将变量存储到MySQL数据库(例如,用于RPG网站交易)。

我找到了Ratchet,这是有效实现这些目标的好选择吗?也许同时使用Node.js和PHP?我不知道该怎么做。

1 个答案:

答案 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但不能在前端获取的东西。它应该定期更改。这样,如果它受到攻击,攻击者将无法长时间连接到实时会话,或者根本无法连接。

这个概念可以改进。例如每请求令牌,它在每次只能使用一次的请求上发生变化。这是我正在使用的实时通知系统。