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