Php 在SilverStripe中运行的Ratchet web套接字服务器

Php 在SilverStripe中运行的Ratchet web套接字服务器,php,websocket,silverstripe,ratchet,Php,Websocket,Silverstripe,Ratchet,我正在尝试运行一个Ratchet WebSocket服务器,该服务器可以从SilverStripe实例访问DataObjects,该实例可以作为一个长期运行的进程从终端运行 我目前的方法是从cliscript.php开始,包括core/core.php和model/DB.php,并使用\u config.php中定义的相同数据库配置连接到数据库 有没有更好的方法不需要从cli script.php复制代码?虽然我唯一拥有的是一个启动服务器的控制器,但这听起来也错了 另一个想法是将它们分开,并使用

我正在尝试运行一个Ratchet WebSocket服务器,该服务器可以从SilverStripe实例访问
DataObject
s,该实例可以作为一个长期运行的进程从终端运行

我目前的方法是从
cliscript.php
开始,包括
core/core.php
model/DB.php
,并使用
\u config.php
中定义的相同数据库配置连接到数据库

有没有更好的方法不需要从
cli script.php
复制代码?虽然我唯一拥有的是一个启动服务器的控制器,但这听起来也错了


另一个想法是将它们分开,并使用SS REST API在它们之间进行交互,但与PHP对象交互会更简单。

最后,我改变了设计,让所有消息通过SilverStripe实例(来自客户端的Ajax)传递,然后通过RESTAPI将WebSocket消息推出

在研究托管这样一个进程时,我偶然发现了Pusher,我现在使用它来实现系统的实时性

简言之:

  • JS客户端使用Ajax通知SilverStripe应用程序更改
  • SilverStripe应用程序将更改保存在数据库中
  • SilverStripe应用程序使用其API/PHP库通过Pusher推送消息
  • Pusher通过WebSocket连接将消息发送到所有其他连接的客户端

  • RESTAPI会起作用吗?有几个模块可以提供帮助。关于REST API,我唯一关心的是SS平台和WebSocket服务器都可以存在于同一台服务器上,因此当WebSocket服务器可以(可能)直接使用SS对象时,使用REST API在它们之间进行通信似乎有些过分。不过,这是一个选择。你可能正在寻找:不确定他们将如何合作,但这可能会有所帮助。@Michania1这是一个非常好的发现。谢谢@howard10,当你解决问题时,你能将你的答案标记为接受吗?