2016-07-19 13 views
1

ので、私はiOSアプリを構築していると私はnodejsexpress、& mongodb/wのREST APIの構築を開始しました。私は現在、私のアプリにインスタントメッセージと通知を追加しているので、websocketssocket.io)を読んでいます。読書のトンの後、私は正直言って私の頭の中に私のAPIに統合する方法と概念を囲むことはできません。例えば、私は、このAPIのルートを統合socket.io

を持っている:

// 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ファイルを作成してそこからエクスポートできますか?バックエンドはまったく私のものではないので、これが貧しい問題であれば謝罪します。ありがとう!次のように

答えて

5

のWebSocketやインスタントメッセージングやサーバプッシュ通知のsocket.io接続を使用するための一般的なアーキテクチャは、次のとおりです。

  1. 各クライアントがWebSocketのか、サーバーへのsocket.io接続を確立します。
  2. サーバーはこれらの着信接続をリッスンし、初期接続で何らかの種類のCookieを使用して、どのユーザーが接続しているかを識別します。
  3. サーバーは、ユーザーセッションの期間開いているこれらの接続を保持し、ユーザーセッションの受信メッセージを待機します。
  4. サーバーはいつでもクライアントに通知を送信したい場合は、目的のクライアントに属する接続を見つけて、その接続でメッセージを送信できます。
  5. クライアントは受信メッセージを受信し、そのメッセージを受信して​​処理します。
  6. インスタントメッセージングの場合、クライアントは本質的に「Bobにこのメッセージを送信する」というメッセージをサーバーに送信します(Bobはシステム上の他のユーザーのユーザーIDです)。サーバーは他のクライアントからそのメッセージを受信し、Bobの接続を検出し、その接続のBobにメッセージを送信します。

webSocketの上にいくつかの便利な機能があり、使用するすべてのプラットフォームにsocket.ioライブラリが必要であるため、socket.ioの使用をお勧めします。 socket.io documentationにはチャットを行うデモアプリケーションが含まれています。これはsocket.ioでどのように動作するかをあなたに知らせるものです。

+0

アーキテクチャを徹底した後、ドキュメントを読むのが簡単になりました。ありがとう!私は自分の頭をあらゆるものに包み込むように努力していました。 O.o – V1P3R