2016-01-30 39 views
1

我正在開發多人撲克遊戲,並使用node.js和socket.io以及redis適配器。Socket.io創建帶參數的房間

我有房的一些參數:

name: string - 服務器名稱,大廳

password: string - 服務器密碼,私人遊戲

gameSpeed: boolean - 遊戲速度(快,正常,慢)

players: Array<string> - 玩家的名字,在這個房間裏

- 玩家可以在這個房間連接的數量

我在socket.io文檔中找不到這樣的功能。 有沒有辦法做到這一點?

回答

0

一個選項肯定會創建一個對象,例如,

var rooms = { 
    room1: { 
     name: 'room1', 
     password: 'randomPassword' 
     gameSpeed: true, 
     players: [], 
     amount: 8 // maybe rename to maxPlayers 
    } 
} 

打開一個套接字後,只需發送JSONified房間對象(如果需要的話)(不要忘記刪除密碼)。在將套接字加入所需房間之前,只需檢查您需要檢查的內容(例如,如果players.length <數量爲maxPlayers)。

另外,在玩家陣列中,您可能想要保存一個playerObject,除了玩家數據之外,它還擁有對玩家套接字的引用。這樣,當你知道你想在特定的房間裏與玩家做某事時,你不必搜索整個套接字列表。

最後,當我在socket.io服務器上工作時(儘管這是大約一年前的事情),我發現有一個對象引用了所有連接的套接字,這些套接字使用我可以輕鬆使用的一些唯一ID索引例如來自數據庫的用戶uuid)。