使用socket.io和nodejs

时间:2016-07-15 15:53:27

标签: angularjs ajax node.js websocket socket.io

我正在开发一个支付网关(带有2因素授权,2FA),其中node / express用于服务器端,角度js用于客户端。

来自客户的通讯 - >服务器可以通过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,但是在此发出的每条消息都将转发给所有客户端。我需要一种方法来向仅发起特定付款流程的特定客户发送消息。

每个交易都将使用ECDH加密。 UUID将可用于交易,发起客户以及付款的订单号。

感谢上述任何指导。

1 个答案:

答案 0 :(得分: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);
  }
});

所以,正如你在这里看到的,我加入了客户端进入游戏,我在同一个频道回复,我告诉客户他已成功加入游戏,在服务器端我将客户端放入房间他加入。任何后续的游戏内操作都将仅广播到客户刚加入的房间