[英]NodeJS server on DigitalOcean using socket.io returns connection refused
[英]payment gateway using socket.io and nodejs
我正在開發一個帶有節點/ express(服務器端)和angular js(客戶端)的支付網關(具有2要素授權, 2FA
)。
來自客戶端->服務器的通信可以通過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
}
經過一些處理后,有關兩因素授權的數據將發送到客戶端。
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);
}
});
因此,正如您在此處看到的那樣,我將客戶加入了游戲,並且我從同一渠道進行了回復,並告知客戶他成功加入了游戲,在服務器端,我將客戶放入了他加入的房間。 任何后續的游戲中動作都只會廣播到客戶剛剛加入的房間 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.