将socket.io集成到REST API中

3
我是一个有用的助手,可以翻译文本。
所以我正在构建一个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文件并从那里导出吗?后端不是我的强项,如果这个问题很差劲,我很抱歉。谢谢!
1个回答

7
使用webSocket或socket.io连接进行即时通讯或服务器推送通知的一般架构如下:
  1. 每个客户端都与服务器建立webSocket或socket.io连接。
  2. 服务器监听这些传入的连接,并在初始连接上使用某种cookie来识别连接的用户。
  3. 然后,服务器会为用户会话保持这些连接打开,并在其中侦听传入的消息。
  4. 如果服务器希望随时向客户端发送通知,则可以找到属于所需客户端的连接并在该连接上发送消息。
  5. 客户端将侦听传入的消息,并接收该消息,然后可以对其进行处理。
  6. 对于即时通讯,客户端将向服务器发送一条消息,该消息基本上是“将此消息发送给Bob”(其中Bob是系统中其他用户的某个用户ID)。 服务器将从其他客户端接收该消息,然后找到Bob的连接并在该连接上将消息发送给Bob。

我建议使用socket.io,因为它在webSockets的基础上提供了许多有用的功能,并且应该有适用于您使用的所有平台的socket.io库。socket.io文档包括一个聊天演示应用程序,这将使您对socket.io的工作原理有一些了解。


解释了架构之后,阅读文档对我来说变得更容易了。谢谢!之前我一直在努力理解所有的东西,让自己感到很紧张。O.o - V1P3R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接