所以我正在构建一个iOS
应用程序,我已经开始构建一个带有nodejs
、express
和mongodb
REST API
。我目前正在向我的应用程序添加即时消息和通知,所以我一直在阅读websockets
(socket.io
(。在阅读了大量内容之后,老实说,我无法理解这个概念以及如何集成到我的 API 中。
例如,我有以下 API 路由:
// create new message
app.post('/newmessage', function (req, res, next) {
if (!req.body.message ) {
res.json({success: false, msg: 'You must type a message.'});
console.log('message: ' + req.body.message);
} else {
var newMessage = new Message({
fromUser: ObjectID(req.params.id),
toUser: ObjectID(req.params.id),
message: String,
});
// save new message
newMessage.save(function(err) {
if (err) {
res.json({success: false, msg: 'message was unsuccessful.'});
} else {
res.json({success: true, msg: 'message sent!'});
console.log(newMessage.createdAt);
console.log(newMessage.updatedAt);
}
});
}
});
如何将 socket.io 集成到此特定呼叫中?我会创建一个 Socket.js 文件并从那里导出吗?后端根本不是我的事,所以如果这是一个糟糕的问题,我深表歉意。谢谢!
将 webSocket 或 socket.io 连接用于即时消息或服务器推送通知的一般体系结构如下所示:
- 每个客户端都与服务器建立 webSocket 或 socket.io 连接。
- 服务器正在侦听这些传入连接,并在初始连接上使用某种cookie来识别正在连接的用户。
- 然后,服务器在用户会话期间保持这些连接处于打开状态,并侦听这些连接上的传入消息。
- 在任何时候,如果服务器希望向客户端发送通知,它都可以找到属于所需客户端的连接,并在该连接上发送消息。
- 客户端将侦听传入的消息,并将接收该消息,然后可以对其进行处理。
- 对于即时消息,客户端会向服务器发送一条消息,实质上是"将此消息发送给 Bob"(其中 Bob 是系统上其他用户的某个用户 ID(。 服务器将从其他客户端接收该消息,然后找到 Bob 的连接并将消息发送给该连接上的 Bob。
我建议使用 socket.io 因为它在webSockets之上提供了许多有用的功能,并且应该有 socket.io 库用于您将使用的所有平台。 socket.io 文档包括一个进行聊天的演示应用程序,它将让您了解如何使用 socket.io。