棋牌服務(wù)器的用戶玩家同屏是怎樣實現(xiàn)的?不僅是棋牌游戲,網(wǎng)游和手游都能實現(xiàn)玩家同屏,在這個過程中服務(wù)器起著什么樣的作用?大家都知道游戲服務(wù)器與普通服務(wù)器相比,性能和配置等都比較高,價位也高,為大家介紹一下棋牌服務(wù)器的用戶玩家同屏是怎樣實現(xiàn)的。
棋牌服務(wù)器的用戶玩家同屏是怎樣實現(xiàn)的?不僅是棋牌游戲,網(wǎng)游和手游都能實現(xiàn)玩家同屏,在這個過程中服務(wù)器起著什么樣的作用?大家都知道游戲服務(wù)器與普通服務(wù)器相比,性能和配置等都比較高,價位也高,為大家介紹一下棋牌服務(wù)器的用戶玩家同屏是怎樣實現(xiàn)的。
因為棋牌游戲的同步數(shù)據(jù)量比較小。一般常見的同步方式有兩種:
a,客戶端主動拉取。
客戶端定時主動向服務(wù)器請求一個用戶的消息隊列,當(dāng)一個玩家有操作需要同步到其他玩家時,在服務(wù)器端先把這個消息放到這個用戶的消息隊列中。等待客戶端的拉取操作。這種方式的好處是,不需要考慮網(wǎng)絡(luò)閃斷或網(wǎng)絡(luò)不好的情況,信息都是同步獲取的。缺點是,定時拉取的時間間隔很短,可能不到一秒就會拉取一次。
b,服務(wù)器主動推送
當(dāng)一個用戶出牌的消息需要同步給其他玩家時,服務(wù)器會獲得這個玩家與服務(wù)器建立的socket連接,然后服務(wù)器使用socket 主動向客戶端發(fā)送消息。
這種方式要考慮網(wǎng)絡(luò)閃斷,消息丟失的問題。因為服務(wù)器推送的消息,客戶端有可能會收不到。所以客戶端需要根據(jù)心跳來判斷網(wǎng)絡(luò)是否有斷開過,如果有斷開,需要重新從服務(wù)器拉取整個房間狀態(tài)的消息?;蛘吒鶕?jù)服務(wù)器發(fā)送的消息號,如果客戶端發(fā)現(xiàn)接收到的服務(wù)器消息號有跳號的,比如應(yīng)該接收10,卻收到了12,說明中間有消息丟失,需要重新拉取整個房間的狀態(tài)信息。
這種方式的缺點是,開發(fā)復(fù)雜,需要考慮一些網(wǎng)絡(luò)問題。優(yōu)點是,只有在有消息的時候才會推送,沒有的話不推送,不占用帶寬等系統(tǒng)資源,可以增加用戶同時在線量,也就是增加了服務(wù)器的承載量。
棋牌服務(wù)器的用戶玩家同屏是怎樣實現(xiàn)的?看過了以上所有的文章之后,對于棋牌服務(wù)器的用戶玩家同屏是怎樣實現(xiàn)的相信你已經(jīng)心里有數(shù)了,你可以看到服務(wù)器在游戲運行中存在的重要地位,所以大家在選擇服務(wù)器的時候一定要認真挑選。
免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。