2016-07-15 72 views
0

我正在開發一個支付網關(具有2個因素授權,2FA)與服務器端的節點/ express和客戶端的角度js。支付網關使用socket.io和nodejs

來自客戶端 - >服務器的通信可以通過POST請求完成,但我希望通過socket.io從服務器 - >客戶端進行通信。

現在對於發起付款的新用戶,POST請求將從客戶端發送到服務器,數據將被處理並且回覆將被髮回。出於非常特定的原因,回覆不能作爲res中收到的POST請求的一部分發送。

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有房間。如果你願意,比方說,只有買方和賣方纔能聽到認證結果,把它們放到一個房間裏,並把你的信息發送到房間本身。客戶端不會改變。您只需從客戶端連接到服務器,然後服務器將客戶端與其他所有適當的參與方放在一個房間中,所有後續通信將僅發送到房間而不是通道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

我不知道,但它會很失望,如果一個不能用快遞(你已經在你的應用程序中使用),會話管理和socket.io爲配合管理實時的東西。 – ardilgulez