1
我使用node.js進行遊戲配對(例如,多個客戶端連接服務器,如果有多個玩家,則彼此連接;或者他們將被踢出30秒)。如何在使用Node.js進行遊戲配對時進行設計
目前,我使用套接字連接(這可以檢測到意外丟失的連接)。但我不能配對想出一個優雅的方式:
var net = require('net');
var _clients = new Array();
net.createServer(function(_socket) {
_socket.on('data', function(_data) {
//Parse client data
_clients.push(_socket);
setTimeout(function(){
_socket.write('kicked\n');
},30*1000);
_socket.on('close', function(data) {
//Delete _socket from _clients
}
}).listen(6969, '127.0.0.1');
setInterval(function(){
var pair = new Array();
while(_clients.length>2)
{
var _s1 = _clients.pop(), _s2 = _clients.pop();
// Pair _s1 & _s2
}
},2*1000);
目前的代碼工作,但它是非常糟糕的設計:(
(1)setInterval的使用,而不是異步調用(2)維護一個類似_clients的數組是不方便的,因爲我必須處理「踢」/丟失的連接/對或其他情況。
PS。目前我按時間順序配對客戶端,但可能是隨機對或其他條件是需要避免在線玩家總是與同樣的人配對。
非常感謝。這確實有助於消除時間間隔,但如果我想保留連接池並將它們有條件地配對(不配對最近的兩個),它不起作用。 – Kanglai
您可以做一個或另一個。如果你想要一個連接池和連接順序更隨機的配對,你可能需要間隔地做些事情。這並不一定有什麼問題。 –
非常感謝。我只是想避免setIntervals ... – Kanglai