我有一个应用程序,其主要功能通过WebSocket或长轮询实时工作.

然而,该网站的大部分内容都是以RESTful的方式编写的,这对应用程序和其他客户机来说是很好的.然而,我正在考虑将所有站点函数从REST转换为websocket API.这将使我更容易将实时功能集成到网站的所有部分.这会使构建应用程序或移动客户端变得更加困难吗?

我发现有些人已经在做这样的事情:SocketStream

推荐答案

不是说这里的其他答案没有价值,它们提出了一些好的观点.但我要反对大家的普遍共识,同意大家的看法,即转向websockets不仅仅是为了实时功能,这是非常有吸引力的.

我正在认真考虑通过websockets将我的应用程序从RESTful架构转移到更多RPC风格.这不是一个"玩具应用程序",我也不是说只有实时功能,所以我有预约.但我认为走这条路有很多好处,并认为这可能是一个例外的解决方案.

我的计划是使用DNodeSocketIOBackbone.有了这些工具,我的主干模型和集合可以通过调用RPC风格的函数在客户机和服务器之间传递.不再需要管理REST端点、序列化/反序列化对象等等.我还没有使用socketstream,但它看起来值得一看.

在我可以肯定地说这是一个好的解决方案之前,我还有很长的路要走,而且我确信这不是适用于所有应用程序的最佳解决方案,但我相信这种组合将非常强大.我承认有一些缺点,比如失去缓存资源的能力.但我有一种感觉,这种优势将超过它们.

我有兴趣关注你们探索这种解决方案的进展.如果你有任何github实验,请告诉我.我还没有,但希望很快能有.

下面是我一直收集的待阅读链接列表.我不能保证它们都是值得的,因为我只浏览了其中的很多.但希望有人能帮上忙.


关于使用套接字的很棒的教程.我是特快专递的.它向套接字公开express会话.io并讨论如何为每个经过身份验证的用户设置不同的房间.

关于节点的教程.js/socket.io/主干.js/express/connect/jade/redis,具有身份验证、Joyent托管等功能:

关于使用带主干的推进器的教程.js(使用Rails):

使用主干构建应用程序.客户端和节点上的js.js和express、socket.io,服务器上的dnode.

使用带DNode的主干:

Node.js相关问答推荐

即使部署成功,也不会触发 Firebase 函数来填充 Firestore 集合.为什么?

tsc:当我上传 React+next js 和节点项目时,在 heroku 找不到

NodeJs 过滤掉目录异步

如何在 node.js 环境中从 WebAssembly (Rust) 调用异步 JavaScript 导入函数?

错误消息“错误:0308010C:数字信封例程::不支持”

有什么方法可以修复 package-lock.json lockfileVersion 以便 npm 使用特定格式?

什么 TypeScript 配置产生最接近 Node.js 14 功能的输出?

是否有 Angular / Angular-CLI 和 Node.js 的兼容性列表?

.js 和 .mjs 文件有什么区别?

deno vs ts-node:有什么区别

Async / await vs then 哪个最适合性能?

`npm install` 后出现关于 python 语法错误的错误?

Puppeteer 错误:未下载 Chromium 修订版

如何使用 nvm 更改节点版本

NPM - 无法替换配置中的 env:${NPM_TOKEN}

nvm: N/A: 版本“N/A -> N/A”尚未安装

升级到 Babel 7:无法读取 null 的属性“绑定”

bash:npm:找不到命令?

(节点:63208)DeprecationWarning:collection.ensureIndex 已弃用.改用 createIndexes

如何通过 AWS SDK Javascript 使用 Async 和 Await