gpt4 book ai didi

Node.js 和 Socket.io - 它们在实时 Web 应用程序方面能走多远?

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:59 25 4
gpt4 key购买 nike

我将构建一个 Web 应用程序来管理笔记(想想类似于 Evernote 的东西)。我决定使用 Backbone.js+JQuery 客户端。服务器端,我还没有决定:纯 PHP(我非常了解)或 Node.js+Socket.io(对我来说是全新的)。

我正在考虑 Node.js+Socket.io,因为我希望我的 Web 应用程序是实时的(即:如果用户更新了一条笔记,该笔记会立即为共享该笔记的协作者更新,而无需重新加载页面)。

我也在考虑,作为第三种选择,使用 Node.js 和 Socket.io 作为 UI,使用 PHP 作为 REST API(我觉得用 PHP 构建 API 更舒服)。 PHP 和 Javascript 代码将共享 MongoDB 数据库。

我的问题是:如果我使用 PHP 为我的 Web 应用程序开发 REST API,并且通过该 API 为用户创建了一个新笔记(即:Android 应用程序发送一个 API 请求来创建该笔记),Node 会.js、Socket.it 和 Backbone.js 能够立即更新用户的 UI 并在他们的屏幕上显示新的笔记?我认为这可以称为“推送通知”。

希望我说得足够清楚。

此外,是否有其他优秀的技术来构建实时 Web 应用程序?

最佳答案

是的,Node.js + Socket.IO 会做得很好。 Node 使用事件循环,这意味着根据请求它会进入队列。 Node 逐一处理这些请求。传统的 Web 服务器处理“每个请求一个线程”的方法,即创建一个线程来处理该请求。

这里 Node 的好处是它不需要经常切换上下文,这意味着它可以非常快速地处理这些请求......很可能比您的 PHP 服务器更快。然而,Node 在单个 CPU 内核上作为单个进程运行。如果您的应用程序是 CPU 密集型应用程序,它可能会阻塞,这意味着每个请求的时间会变慢。

但在我看来,您的应用程序不是 CPU 密集型的,这意味着 Node.js 会运行良好。

决定如果你的时间有限,又不想学习新技能(Node),PHP 也行。如果您有时间,我建议您学习 Node.js,因为它在 I/O 密集型任务(例如用于创建笔记的 REST API)方面非常强大。

更新用户界面如果您的预期用途是通过移动设备,我建议使用 WebSockets,但有一个后备方案,例如长轮询。可以使用 Node 或 PHP 更新客户端 UI。然而,根据我的经验,在 Node.js 上使用 Socket.IO 更容易做到这一点。

使用 Node.js/Socket.io 更新客户端的例子

客户端

  socket.on('new-note', function (data) {
placeNewNote(data);
});

服务器端

socket.emit('new-note', data);

Node 入门: How do I get started with Node.js

另请注意,如果您想构建使用 WebSockets 的 native Android 移动应用...您将需要使用:Java socket.io client

关于Node.js 和 Socket.io - 它们在实时 Web 应用程序方面能走多远?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10531162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com