我是不是破坏了在我的 AJAX 脚本中使用 NodeJS / socket.io 的好处?

Posted

技术标签:

【中文标题】我是不是破坏了在我的 AJAX 脚本中使用 NodeJS / socket.io 的好处?【英文标题】:Am I ruining the benefit of using NodeJS / socket.io with my AJAX scripts?我是否破坏了在我的 AJAX 脚本中使用 NodeJS / socket.io 的好处? 【发布时间】:2014-04-04 13:01:24 【问题描述】:

我正在创建一个具有聊天功能的应用程序,我决定为此使用 NodeJS / socket.io。我的项目也使用 php,我想将应用程序中的数据存储在 mysql 服务器中。这就是目前正在发生的事情

socket.on (client connect) -> AJAX 脚本,将新客户端的用户名添加到 MySQL 数据库(我想在 MySQL 中保留连接到聊天的用户列表)

任何人发送消息 -> AJAX 脚本将该消息的时间戳版本放入 MySQL 数据库(聊天日志)

socket.off -> AJAX 脚本从 MySQL 数据库中删除客户端

我是否使用了太多的 AJAX,以至于破坏了使用 socket.io 的好处?据我了解:我仍然从与 socket.io 的实时连接中受益,并且我的 AJAX 导致我的 PHP 服务器上的单独负载,但这些 AJAX 操作不应该中断或阻止 Node.js。但是 php 服务器上的这种单独负载会减慢客户端 socket.io 连接的速度吗?我是 Node / socket.io 的新手,所以我可能缺少一些关于后端发生了什么的基本知识。

【问题讨论】:

【参考方案1】:

这不会破坏 websockets,但显然这是不必要的服务器过载。你为什么使用 AJAX?为什么不直接从 Node 更新数据库?? 那些 AJAX 调用将永久地访问服务器并且肯定会引起麻烦。使用 websocket(以及长轮询)的原因之一是避免过度负载。如果 PHP 和 Node.js 都在同一台服务器上,过多的负载会使两者都变慢。

当用户(又名套接字)连接/断开连接时,Node.js 可以将该用户添加/删除到 MySQL。如果 Node.js 服务器位于另一台机器上,请允许该单独服务器的 MySQL 远程连接。 消息也是如此,直接从您的 Node.js 脚本更新数据库。

这里有一个 MySQL 的 Node 驱动程序:https://www.npmjs.org/package/mysql

【讨论】:

感谢您的详细回答和快速响应...我对 node 的 MySQL 驱动程序有点怀疑,因为我想使用 PDO 处理我的数据库,但我一定会阅读的司机。谢谢!!

以上是关于我是不是破坏了在我的 AJAX 脚本中使用 NodeJS / socket.io 的好处?的主要内容,如果未能解决你的问题,请参考以下文章

ajax 在运行脚本之前检查用户是不是登录

带有 wordpress 的 Ajax 脚本在我的输出中添加了一个随机的“0”[重复]

为啥在我的 Flutter Web 上使用路径 URL 策略会破坏我的导航?

将 RN 0.37 升级到 0.41 破坏了在设备上运行的能力

Google Maps 脚本破坏了 Safari TypeError:表达式“document.body”[null] 的结果不是对象

当我在我的 Web 应用程序中发送 Ajax 请求时,控制器端会在 laravel 的请求参数中为我提供脚本