-
Notifications
You must be signed in to change notification settings - Fork 438
2.Login
大鹏 edited this page Aug 13, 2019
·
1 revision
主要代码集中在前端:LoginController.lua,后端:Skynet-LoginServer
前端需要先连接上“登录服务器”做校验,成功后拿到通关密令,然后再凭此密令连接上游戏服务器并开始正式游戏。
1:由第三方平台(如九游,腾讯游戏平台等)提供的 SDK 里的界面进行注册或登录,其登录将给我们一个 token
2:请求最新的服务器列表,可通过 http 取下来.(优化:服务器列表可以分成若干文件提高用户体验)
3:前端向登录服务器请求连接,然后一连接成功就会收到一个登录服务器的随机值(challenge)
4:前端发一个经过 dhexchange 的随机值 (handshake_client_key) 给登录服务器
5:登录服务器收到 handshake_client_key 后生成并发送 handshake_server_key 给前端,此时双方可算出密钥 secret 了
6:前端利用之前收到的 challenge 和算出的 secret 生成并发送 hmac 和 token 信息(包含帐号密码和游戏服务器标识)给登录服务器
7:登录服务器验证用户信息后告诉前端是否验证成功(200 subid 或者400 Bad Request 等)
8:开始请求连接游戏服务器 M,连接上后前端利用 secret 和 subid 生成并发送握手校验给 M
9:收到游戏服务器 M 的校验结果(成功为200)
10:可以正常向游戏服务器收发协议了
登录流程前阶段的协议内容以行分隔,而正式游戏的协议内容是:包头(大端2字节)+内容