使用 PHP/MySQL/JS 进行类似 facebook 聊天的后端服务器软件?

2024-01-06

我用 PHP 和 JavaScript 开发了一个类似 Facebook 的聊天工具。这是一个论坛软件的插件。目前我正在使用(短)轮询来接收新消息,但我想尝试使用更好的东西,例如套接字。

对于这种聊天(每个网站都可用,私人聊天,群聊...),您会推荐什么:WebSockets、node.js with socket.io、ejabberd...


根据我个人的经验,PHP 没有好的套接字库。通常,人们希望拥有一个套接字库,如果本机套接字支持不可用,该库将具有后备机制。我的 2 个建议:

  1. 完全切换到node.js + Socket.io解决方案,放弃PHP。
  2. 有一个nodejs + socket.io 聊天系统作为单独的服务器与PHP 一起运行。将 HAPROXY 放在您的网络服务器前面。将所有套接字请求转移到node.js,并将所有其他请求转移到PHP。通过这种方式,您将能够使用 Node.js 和 PHP 的优点。

我也遇到过类似的情况,我正在使用选项 2:)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP/MySQL/JS 进行类似 facebook 聊天的后端服务器软件? 的相关文章

随机推荐

  • 模型缺少“image_file_name”所需的 attr_accessor - Ruby on Rails 4

    当我发布新聚会时 我收到以下错误消息 派对模型缺少 image file name 所需的 attr accessor它指向我的 party controller rb 中的代码 def create party Party new par
  • LLDB 中有 Quicklook 调试命令吗?

    假设我有一个UIImage我正在设置一个UIButton 我想在 Quicklook 中查看它 但是哦不 我无法快速查看调试图像是什么 但我可以从 LLDB 做一些事情来获取图像 比如 getAppButton imageForState
  • 从 PyQt 小部件项设置和获取“数据”?

    这与其说是一个问题 不如说是一个要求解释的请求 我正在关注 Mark Summerfield 的 使用 Python 和 Qt 进行快速 GUI 编程 我一定错过了一些东西 因为我无法理解以下机制将我正在使用的真实 instance ite
  • 确定 cmake_minimum_required() 的适当版本

    从一组CMakeLists txt文件 我如何确定适当的版本号cmake minimum required 还有比熟悉 CMake 功能的历史并使用反复试验更好的方法吗 CMake 有每个版本的文档 https cmake org docu
  • 如何在 WPF 中将按钮中的图像设置为每 30 秒摇动一次?

    我不擅长处理任何样式和动画 我希望能够获得一些帮助来制作一个图像 该图像是按钮的唯一内容 当按钮可见性设置为 Visibility Visible 时 每 30 秒震动一次 这是为了引起用户的注意 鼓励他们点击按钮 我更愿意将其作为图像上的
  • Lodash 去抖动不起作用

    const debounce require lodash debounce gt console log testing 1000 leading true trailing false 上面的代码不起作用 https lodash co
  • 共享异常实例是否安全

    我们正在制作一个类似Excel 的系统 当我们打开文档并发现不支持的功能时 我们会抛出异常 我们只支持一小部分 Excel 函数 这种情况可能会经常发生 问题是 当有很多单元格包含不受支持的功能时 就会创建大量异常实例 创建这么多异常实例会
  • cygwin 中的 aws cli - 如何清理 Windows 和 cygwin 样式路径中的差异

    我怀疑这是我在正确设置路径变量方面的无能 但我不知所措 我已经在 cygwin 中使用 pip 安装了 aws cli pip install awscli 我有两个 python 环境 一个 windows anaconda 发行版 以及
  • github:没有拉取请求的代码审查?

    Using a 共享存储库模型 https help github com articles about collaborative development models 简而言之 我们希望能够审查代码更改 但是 我们根本不希望拉取请求阻碍
  • 跨环境导出和导入安全权限的最佳方法是什么?

    我们有大量的出版物 目前我们在多个环境 主要是 UAT 和 PROD 中手动应用 CMS 权限 这是很乏味的 而且经常容易出错 我们正在尝试跨多个环境导出和导入 CMS 权限 因此可以手动完成一次 然后使用某种工具移植到其他环境 环境 Tr
  • 如何在 Azure 函数中接收多部分表单数据?

    我想在 Azure Function 中接收包含图像和文本的多部分数据 我可以看到很多 C 和 Node 中的示例节点链接 https www builtwithcloud com multipart form data processin
  • 为什么 MutationObserver 代码不能在 Chrome 30 上运行?

    From http updates html5rocks com 2012 02 Detect DOM changes with Mutation Observers http updates html5rocks com 2012 02
  • 在 Android 浏览器中使用 HTML5 播放音频

    我想在以下位置播放音频Android浏览器 使用html5
  • 如何折叠 CSS 网格中未使用的行?

    因此 我在移动设备上有一个由三个段落组成的简单堆栈 我想在较大视口上的网格中设置样式 而不更改源顺序 第一部分可能有几行内容 也可能根本没有内容 在这种情况下 如何使第一行折叠以便第二行填充空间 IE 当顶部部分为空时 最后一个部分应出现在
  • 将数据插入3个相关表中

    如何将数据插入3个相关表 SQL Server 例如 我有表 Customer Address 将数据插入到 客户 和 地址 后 如何将 客户 和 地址 中的 ID 插入到 客户地址 中 连接表 Thanks Use 范围标识 http m
  • 在面板中绘制不同数据帧的同一列

    我从模拟中获得了数据 该数据为我提供了存储在 DataFrame 中的一些值 100 行 x 6 列 对于不同的起始值 我将数据保存在面板中 2 个数据框 x 100 行 x 6 列 现在我想比较两个模拟中名为 A 的列 名为 Sim1 和
  • 带有参数的 Emberjs 路由在某些情况下会失败

    在某些情况下 我遇到了路由 url 的问题 这是我的路由器 contacts Em Route extend route contacts index Em Route extend route connectOutlets functio
  • 使用 LINQ 比较两个数组

    例如 我有两个数组 string arrayOne One Two Three Three Three string arrayTwo One Two Three var result arrayOne Except arrayTwo fo
  • 自定义部分的 Web 配置转换

    我的 MVC 5 应用程序中有许多不同的 Web configs 用于不同的环境 例如测试 生产 我有适当的网络转换来更改不同环境的值 例如 我的 web config 文件中有以下应用程序设置
  • 使用 PHP/MySQL/JS 进行类似 facebook 聊天的后端服务器软件?

    我用 PHP 和 JavaScript 开发了一个类似 Facebook 的聊天工具 这是一个论坛软件的插件 目前我正在使用 短 轮询来接收新消息 但我想尝试使用更好的东西 例如套接字 对于这种聊天 每个网站都可用 私人聊天 群聊 您会推荐