我正在实现一个可通过 Web 和移动客户端访问的产品,并且正在进行彻底的研究以确保在开始之前我已经选择了一套好的工具。对于前端,我使用 AngularJS(Angularjs + angular-ui on web,ionic + cordova on mobile),因为我想有一个单一的后端服务于所有类型的客户端,我计划实现一个 RESTful 服务(可能是一个接受并返回 JSON 数据)。我倾向于使用 Mongo、Node 和 Express 来创建这个 RESTful API,但我愿意接受这方面的建议。
但我现在的症结在于:应用程序的某些部分(包括实时聊天/消息传递部分)需要是实时的。我知道用于实现实时 Web 服务的各种技术和协议(protocol)(webhooks、websockets、长轮询等)以及实现它们并公开该功能的库和框架(SockJS、Socket.io 等)和我想澄清的是,我并不是在问“什么是最好的框架”这类问题。
我的问题是关于并排实现这两种服务的正确方法。我应该将聊天服务与应用程序的其余部分分开吗?或者是否有一种干净的方法可以将这两种不同的协议(protocol)集成到同一个应用程序中?
最佳答案
express 框架非常模块化,因此如果您愿意,它可以与 websocket 模块并排放置。这样做的最常见原因是通过在两个模块中使用相同的 session 存储来跨 http 和 websockets 共享身份验证例程。
例如,您可以在用户登录时使用 express 框架通过 http 对用户进行身份验证,这将允许访问您的聊天应用程序。从那时起,您将利用 websockets 的实时和快速协议(protocol),在您的服务器代码上,您将检查客户端随套接字消息发送的 cookie,并检查该请求是否与之前经过身份验证的 session 相对应。
关于node.js - 将实时组件集成到 REST 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170061/