我正在开发一个支付网关(具有2因素授权,2FA
),服务器端带有node/express,客户端带有angular js。
来自客户端 --> 服务器的通信可以通过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
,但在此上发出的每条消息都将发送到所有客户端。我需要一种方法来仅向启动该特定付款流程的特定客户发送消息。
每笔交易都将使用ECDH进行加密。UUID 将可用于交易、启动客户以及正在为其付款的订单号。
感谢对上述内容的任何指导。
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);
}
});
所以,正如你在这里看到的,我把客户端加入游戏,我从同一个渠道回复,我通知客户他成功加入了游戏,在服务器端,我把客户端放进了他加入的房间。任何后续的游戏内操作将仅广播到客户端刚刚加入的房间。