我正在尝试使用websockets和Symfony 2创建一个聊天应用程序。给定聊天室的传入消息应存储在 MySQL 数据库中,传出消息应发送给该聊天室的所有注册者。我正在考虑为后端使用这样的东西(使用 Symfony 2)https://github.com/GulDmitry/php-websocket-server
而这个用于前端http://socket.io/
我认为所有用户都应该添加到某种全局服务器数据结构中,该结构指定在聊天室更新时向谁发送消息。这样的结构在 PHP 中可能吗?似乎不会,所以我不确定解决这个问题的最佳方法是什么。
是的。"服务器"通常是永远运行的单个 php 进程。您不希望它通过您的 Web 服务器运行,因此您可以从命令行启动套接字服务器并让它运行。使用这种结构,您可以只使用数组来存储所有用户。
最终,您可能希望运行多个实例。您可以让多个脚本通过内存、文件、数据库或其他形式的 IPC 进行通信。因此,可以在任何单个套接字服务器进程之外维护该结构。但是,这些是超出您问题范围的复杂情况。