2016-07-15 10 views
0

私は、サーバーサイドのノード/エクスプレスとクライアントサイドの角度jを持つ支払いゲートウェイ(2要素認証、2FA)を開発しています。payment gateway using socket.io and nodejs

クライアントからサーバへの通信はPOSTリクエストで行うことができますが、サーバ - >クライアントからの通信をsocket.io経由で行いたいと考えています。

お支払いを開始した新規ユーザーの場合、POSTリクエストがクライアントからサーバーに送信され、データが処理され、返信が返されます。非常に具体的な理由により、受信したPOSTリクエストのresの一部として返信することはできません。

app.post('/receive', function(req,res){ 
    data = req.body 
    res.send('success') 
    // do something with the data 
    // Details regarding 2FA will be sent later via socket.io 
} 

何らかの処理が行われた後、2ファクタ認可に関してクライアントにデータが送信されます。

io.on('2fa', {name:name, oneTimePassword:qwerty //and additional details}) 

私は、クライアント側からのチャネル2faを聞くことができますが、これにemitedすべてのメッセージは、すべてのクライアントになります。特定の支払いプロセスを開始する特定のクライアントにのみメッセージを送信する方法が必要です。

各トランザクションはECDHを使用して暗号化されます。 UUIDは取引のために利用可能となり、顧客と支払いが行われている注文番号が開始されます。

上記の説明を参考にしてください。

答えて

1

Socket.ioには客室があります。あなたが望むのであれば、買い手と売り手だけが認証結果を聞き取り、部屋に入れて、メッセージを部屋そのものに放出するとしましょう。クライアント側は変更されません。クライアントからサーバーへのsocket.emitだけで、サーバーはクライアントを他のすべての適切な関係者と一緒に部屋に入れ、その後のすべての通信はチャネル2faではなく部屋に送信されます。

これは、クライアントがゲームルームに参加したとき、これはサーバー側に何が起こるかですが、私が開発したHTML5のマルチプレイヤーゲームからである:あなたがここに見ることができるように、私が参加し、そう

socket.on('joingame', function(data){ 
    if(livingplayers[data.room] && livingplayers[data.room][data.id]){ 
    socket.emit('joinfail', 'That name is taken'); 
    } else { 
    socket.join(data.room); 
    socket.emit('joingame', data); 
    } 
}); 

クライアントをゲームに参加させ、私は同じチャンネルから応答し、彼はゲームに成功したことをクライアントに知らせ、サーバー側でクライアントを彼が参加した部屋に入れました。その後のゲーム内のアクションは、クライアントがここに参加したばかりの部屋にのみブロードキャストされます

+0

ありがとうございました。週末にこれをチェックして、それがどのようになっているかを教えてくれます。あなたは 'socket.io'を使って'セッション管理 'について知っていますか? –

+0

セッション管理のためにあなたが既にあなたのアプリで使っているexpressを使うことができず、リアルタイムのものを一緒に管理するためにsocket.ioを使うことができないのなら、本当に残念です。 – ardilgulez

関連する問題