与PHP和MySQL脚本一起使用WebSocket的最佳方式是什么?

与PHP和MySQL脚本一起使用WebSocket的最佳方式是什么?,php,mysql,websocket,ratchet,Php,Mysql,Websocket,Ratchet,与PHP和MySQL脚本一起使用WebSocket的最佳方式是什么 如果我想在PHP站点上添加实时聊天,或者在实时执行X action时将变量存储到MySQL数据库中(例如,对于RPG网站交易) 我发现,这是一个很好的选择,以实现这些事情的效率?可能同时使用Node.js和PHP?我不知道该怎么办。几个月前我也有同样的问题,经过一些修补和研究后,我自己回答了这个问题 我将Node.js与PHP结合使用 基本上,它是这样工作的。 Apache/php根据请求向客户端发送页面。它包含一个身份验证令牌

与PHP和MySQL脚本一起使用WebSocket的最佳方式是什么

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


我发现,这是一个很好的选择,以实现这些事情的效率?可能同时使用Node.js和PHP?我不知道该怎么办。

几个月前我也有同样的问题,经过一些修补和研究后,我自己回答了这个问题

我将Node.js与PHP结合使用

基本上,它是这样工作的。 Apache/php根据请求向客户端发送页面。它包含一个身份验证令牌。 浏览器初始化socket.io并将令牌发送回节点js服务器。节点然后将令牌发送到私有API(如果愿意)到Apache服务器,请求用户上所需的上下文(例如用户id)。当节点获取此信息时,它将其存储在
“连接ID”=>“用户ID”
表中。(或路由表(哈希映射的特殊术语))

如果一个用户向另一个用户发送“聊天”消息,它将通过ajax转到Apache,进行数据库/处理,然后将其传递回后端的Node.js,后者将用户id插入路由表,并将消息发送到用户浏览器

我不能发布代码,因为这可能会在某个时候用于生产,但这就是我使用基于LAMP的服务器所做的

注意:你需要有一个字符串帐户管理系统来实现这项工作,我为我自己的帐户处理系统实现了这个概念,所以在我的例子中它是非常具体的应用程序

需要令牌是为了安全。例如,这个令牌可以是会话ID。它可以在后端派生用户ID,但不能在前端派生。它应该定期改变。这样,如果它被破坏,攻击者将无法长时间或根本无法连接到实时会话


这一概念可以改进。例如每请求令牌,它在每个请求上都会更改,并且只能使用一次。这是我目前正在使用实时通知系统进行的工作

几个月前,我提出了同样的问题,经过一些修补和研究后,我自己回答了这个问题

我将Node.js与PHP结合使用

基本上,它是这样工作的。 Apache/php根据请求向客户端发送页面。它包含一个身份验证令牌。 浏览器初始化socket.io并将令牌发送回节点js服务器。节点然后将令牌发送到私有API(如果愿意)到Apache服务器,请求用户上所需的上下文(例如用户id)。当节点获取此信息时,它将其存储在
“连接ID”=>“用户ID”
表中。(或路由表(哈希映射的特殊术语))

如果一个用户向另一个用户发送“聊天”消息,它将通过ajax转到Apache,进行数据库/处理,然后将其传递回后端的Node.js,后者将用户id插入路由表,并将消息发送到用户浏览器

我不能发布代码,因为这可能会在某个时候用于生产,但这就是我使用基于LAMP的服务器所做的

注意:你需要有一个字符串帐户管理系统来实现这项工作,我为我自己的帐户处理系统实现了这个概念,所以在我的例子中它是非常具体的应用程序

需要令牌是为了安全。例如,这个令牌可以是会话ID。它可以在后端派生用户ID,但不能在前端派生。它应该定期改变。这样,如果它被破坏,攻击者将无法长时间或根本无法连接到实时会话


这一概念可以改进。例如每请求令牌,它在每个请求上都会更改,并且只能使用一次。这是我目前正在使用实时通知系统进行的工作

请参阅这篇关于实时web技术和PHP状态的文章。使用jQuery/Javascript客户端发送websocket,然后使用Node.js作为websocket服务器,如果需要,还可以通过dnode PHP调用PHP脚本/函数。这样我就不必直接用PHP处理websocket,但我仍然可以用PHP保存我的网站,并让Node.js处理websocket通信。参阅这篇关于实时web技术和PHP状态的文章,您认为使用客户端jQuery/Javascript发送websocket,然后使用Node.js作为websocket服务器和,如果需要,通过dnode PHP调用PHP脚本/函数。这样我就不必直接用PHP处理WebSocket,但我仍然可以用PHP保存我的网站,并让Node.js处理WebSocket通信。