使用luasocket對接后端

簡單的說就是:

1.先連接登錄服務(wù)器進行驗證

2.登錄驗證成功后連接游戲服務(wù)器,后面就是游戲包的流程了

先說luasocket的連接

-- 設(shè)置ipv6

local isipv6_only = false

local addrinfo, err = socket.dns.getaddrinfo(self.host)

for i,v in ipairs(addrinfo) do

? ? ?if v.family == "inet6" then

? ? ? ? isipv6_only = true;

? ? ? ?break

? ?end

end

if isipv6_only then

? ?self.tcp = socket.tcp6()

else

? self.tcp = socket.tcp()

end

self.tcp:settimeout(0) ??

創(chuàng)建tcp

function SocketTCP:_connect()

? ? ?local __succ, __status = self.tcp:connect(self.host, self.port)

? ? ?return __succ == 1 or __status == STATUS_ALREADY_CONNECTED

end

然后是連接ip和端口怠蹂,status返回status_already_connected表示連接成功,_connetct放在tick里面檢測是否連接成功,設(shè)定連接時間腹殿,到時間返回錯誤

local __tick = function()

? ?while true do

? ? ? ?local __body, __status, __partial = self.tcp:receive("*a") -- read the package body

? ? ? if __status == STATUS_CLOSED or __status == STATUS_NOT_CONNECTED then

? ? ? ? ? self:close()

? ? ? ? ?if self.isConnected then

? ? ? ? ? ? ?self:_onDisconnect()?

? ? ? ? ?else

? ? ? ? ? ?self:_connectFailure()

? ? ? ? ?end

? ? ? ? return

? ? end

? ? if (__body and string.len(__body) == 0) or (__partial and string.len(__partial) == 0) then ? ? ? ? return end

? ? ? if __body and __partial then

? ? ? ? ? ?__body = __body .. __partial?

? ? ? end

? ? ? ? ? ? ? self:dispatchEvent({name=SocketTCP.EVENT_DATA, data=(__partial or __body), ? ? partial=__partial, body=__body})

end

end

連接成功后就是用tcp:receive("*a")讀取接收數(shù)據(jù)處理潮梯,同樣是在tick里直到連接失敗

前面提到過連接登錄服務(wù)器和游戲服務(wù)器都是要通以上sockettcp來連接


現(xiàn)在說下登錄服務(wù)器驗證驹沿, 以skynet為例,調(diào)用connect連接成功后收到服務(wù)器數(shù)據(jù)進行認證况褪,如下

self._dispatch = function(self, msg)

local state = self.__state

if state == 1 then

S_EXCHANGE_KEY(msg)

self.__state = 2

elseif state == 2 then

S_SCERET(msg)

self.__state = 10

elseif state == 10 then --檢測版本

S_CHECK_VERSION(msg)

self.__state = 3

elseif state == 3 then

if not S_AUTH_BEGIN(msg) then

self.__state = 6

end

self.__state = 4

elseif state == 4 then

if not S_AUTH(msg) then

self.__state = 6

return

end

self.__state = 5?

closefd(self)

--設(shè)置新的處理函數(shù)

self.connect = connect_gameserver

self.reconnect = reconnect_gameserver

self.request = request_gameserver

self.close = closefd

return cb(self)

end

end

在state=5的時候已經(jīng)驗證成功撕贞,關(guān)閉與登錄服務(wù)器的連接,開始與游戲服務(wù)器連接窝剖,連接返回成功后前端立即發(fā)送secret(驗證時獲取)給游戲服務(wù)器進行驗證麻掸,驗證成功后進入游戲正常發(fā)包流程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酥夭,一起剝皮案震驚了整個濱河市赐纱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熬北,老刑警劉巖疙描,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讶隐,居然都是意外死亡起胰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門巫延,熙熙樓的掌柜王于貴愁眉苦臉地迎上來效五,“玉大人,你說我怎么就攤上這事炉峰∥费” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵疼阔,是天一觀的道長戒劫。 經(jīng)常有香客問我,道長婆廊,這世上最難降的妖魔是什么迅细? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮淘邻,結(jié)果婚禮上茵典,老公的妹妹穿的比我還像新娘。我一直安慰自己宾舅,他們只是感情好统阿,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贴浙,像睡著了一般砂吞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崎溃,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天蜻直,我揣著相機與錄音,去河邊找鬼。 笑死概而,一個胖子當(dāng)著我的面吹牛呼巷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赎瑰,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼王悍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了餐曼?” 一聲冷哼從身側(cè)響起压储,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎源譬,沒想到半個月后集惋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡踩娘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年刮刑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片养渴。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡雷绢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出理卑,到底是詐尸還是另有隱情翘紊,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布傻工,位于F島的核電站霞溪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏中捆。R本人自食惡果不足惜鸯匹,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泄伪。 院中可真熱鬧殴蓬,春花似錦、人聲如沸蟋滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽津函。三九已至肖粮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尔苦,已是汗流浹背涩馆。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工行施, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人魂那。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓蛾号,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涯雅。 傳聞我的和親對象是個殘疾皇子鲜结,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)活逆,斷路器精刷,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 生命正是因為他的不可恒久性,才顯得彌足珍貴划乖。在我們感嘆這滄海桑田的變幻時贬养,只感流光如駒挤土,悲乎琴庵!樂乎!孰不知這厚重的...
    素心伊人閱讀 132評論 0 0
  • 懂我的人仰美, 不需要解釋迷殿。 不懂我的人, 沒必要解釋咖杂。 喜歡也好庆寺,討厭也好。 好像對我來說诉字,都無所謂吧懦尝。 別裝著一副...
    玫瑰花的夢閱讀 212評論 0 1
  • 細細密密的雨如煙霧,聽不到雨落的聲音壤圃,只看到一朵朵傘花涌進校園陵霉。剛近教室,馬老師就笑著對我說:孩子們早就盼著你來了...
    chunma閱讀 464評論 0 2
  • 今天早上比較忙伍绳,領(lǐng)導(dǎo)都在家開會踊挠,所以今天早上沒有出來寫作業(yè),感覺非常的遺憾冲杀。今天一定要好好的補一補這個作業(yè)效床,現(xiàn)在就...
    劉慢慢_9744閱讀 171評論 0 0