真的是好气啊,而且存在热更的情况下,迟迟不上线,非得各种极限情况都要测一遍,说好听点是追求完美,说不好听点就真的是吹毛求疵了。是每个项目经理每个测试一定非得测到无 bug 再上线?我有一句 mmp 也是真的想讲....,此贴纯属吐槽,真的很来气
ps:最新丢的一个问题是,问啥后台挂了一个晚上之后(进后台都会 close ),早上起来 socket connect 就失败了。我现在 ios 正在后台挂机。。刚到一个小时。。。一小时可以成功就测两小时。。直到测到不成功,然后看日志,虽然我估计可能也看不出来啥的。。。自己已有的知识也很难解释,为什么 close 之后的 connect 就会失败了呢(服务器正常运行中),用的 luasocket。心塞塞的。。。。
1
Wicked 2017-08-13 17:55:49 +08:00 1
后台挂一晚上...你跟产品经理说,就算是王者荣耀,后台挂一晚上,也是要强制你杀进程重启的
|
2
lcdtyph 2017-08-13 18:02:17 +08:00 via iPhone
客户端的 socket 是不是绑定了本地端口啊
|
3
leyucode 2017-08-13 18:07:41 +08:00 via Android
是啥游戏,发出来玩玩呗
|
4
misaka19000 2017-08-13 18:09:42 +08:00
后台挂一段时间不应该强制客户端下线吗
|
5
RLib 2017-08-13 18:13:30 +08:00
失败总有错误码吧, 错误码是多少
|
6
fyxtc OP @lcdtyph 是这样的每次 connect 成功的时候,会本地记录最新成功那一次的 ip/port,然后重连的时候会直接调用最新记录的,我怀疑的可能服务器的 ip 或者 port 晚上发生了变化,但是服务器说没有。。。唉
|
9
fyxtc OP @misaka19000 我们游戏老板意思是“如果挂一晚上回来没重连上,那重连还有什么用” 原话。。。你经历过绝望吗 😂
|
11
nVic 2017-08-13 19:07:42 +08:00 via iPhone
告诉老板,PM 能碰到源码,可能正在把源码泄漏给竞争对手。
|
13
KnightMobile 2017-08-13 19:13:00 +08:00
connect 失败看信息,不看经验
|
17
tvallday 2017-08-13 20:14:42 +08:00
protobuf 解析的确慢。编码我都用超轻量级的或者自己写。
|
18
ini 2017-08-13 20:54:48 +08:00 via iPhone
游戏的断线重连,是给游戏中因为地铁信号不稳定等原因短暂掉线又快速能连上的场景用的,主要针对有连续战斗,手机放一晚上还要求断线重连,只能说你们老板不懂游戏
|
19
fyxtc OP @tvallday 准备尝试一下改成单层结构,现在是嵌套了三层 message,然后有两层用了 repeated,都是 Int 的数值,打算改成就用一个字符串传过来,然后自己解析,应该能快不少
|
20
fyxtc OP @ini 老板人是很厉害的,一些判断也很独到。。。但是就是有的时候太扣细节了,不断修改,而且特喜欢测极限的复杂情况,很无奈。。。
|
21
winglight2016 2017-08-13 21:17:36 +08:00
@fyxtc 我可以理解,以前有个老板自称像素级肉眼,可以找到一个像素的 bug,我给他做了四个月 APP,主功能一个月完成,然后三个月都是在不停的修改 UI、bug、功能,每周都提一堆修改内容,然后说改完这些就验收,后来我直接放弃尾款了,实在做不完啊
|
22
RLib 2017-08-13 23:39:02 +08:00
@fyxtc 不是 debug 模式, 一些重要的 log 该记录还是得记录啊, 不然出问题不是没事找事嘛, 对性能影响几乎为 0
|
23
jedihy 2017-08-14 04:42:35 +08:00
看不懂你说的问题
|
24
pengdu 2017-08-14 09:25:58 +08:00
protobuf 慢的话,用 flatbuffer 啊。都是 G 家的,后一个快。
|
25
pengdu 2017-08-14 09:39:16 +08:00
楼主我这样理解对吗?客户端的逻辑:
1,没有建立到服务器的连接,进入 2 2,建立到服务器的连接,如果成功,进入 3,失败的话等待 3s,进入 2 3,客户端每隔 3s 给服务端发心跳,如果连续 3 次心跳失败,进入 4 4,客户端关闭连接,进入 2 不知道是否可以解决你的问题,服务端应该是不用改的吧。 |
26
koalli 2017-08-14 09:49:07 +08:00
我记得好像 cocos2dx 的 libwebsocket 也很多人反映说在 iOS 下会断线,会无法收到断线状态的消息什么的,他们的解决方案是 iOS 换成了 facebook 的 SocketRocket
|
27
hellboys 2017-08-14 10:38:07 +08:00
为什么 close 之后的 connect 就会失败了呢....
``` iOS 后台长时间肯定会被 close. 服务器 ip 和 listen 端口会跟客户端 ip 和端口进行建立连接和数据流交互. 新建立的 connect 本地端口发生变化(五元组), 顾服务器认为是新的连接. 1.即使 bind 相同的本地端口. 从还是存在 External IP 变化(运营商,wifi 出口等). 2.即使五元组相同, tcp 协议也有不同方案的保活. 也不会和不复存在客户端 ip 和端口周旋一个晚上. ``` 问题的重点是: 1.新建立的连接, 是否成功(三次捂手)? 2.新建立的连接是成功, 只是和服务区端协商的私有状态同步有问题(业务数据)? |
28
jukka 2017-08-14 10:48:16 +08:00 via iPhone
失败了会给你错误代码吧,发上来。
结构上你需要一个状态极,从后台切回来之后直接切到登陆的那个状态机,逻辑全走一遍不就完了。 |
29
hector 2017-08-14 10:56:24 +08:00
失败了重试就好了,你怎么指望连一次就成功
|
30
fyxtc OP @hellboys 是连接就没有成功,直接调用 connect 方法就失败了,因为当时是老板测的,没办法获取 error code,现在现在在失败的时候弹窗的时候直接弹出 error code 看下次老板测的时候是什么了。我其实不太理解,就像你刚刚说的,这边测的时候是保证 ip/port 和网络 还有服务器总是正确且不变的情况下,为什么就不能连上呢,这和关了游戏重进这种 connect 有什么区别吗
|
31
fyxtc OP @pengdu 我可能没有表述清楚,是这样的,心跳现在本来就有的,每 1s 一发,3s 收不到判断断开。但是程序在进后台的时候会主动调用 close 方法,相当于很干净的状态了,然后调用 connect 这和正常第一次调用的 connect 有什么区别吗( ip/port 和服务器都是正确且不变的情况)。。我猜想认为系统做了啥操作阻止了这个 app 的连接请求。你说的如果在没有连接成功的情况 3s 重试是一个解决方案,不过我估计老板也不认。。。他应该是想一次就成功。就像我之前测的一般情况,几小时后台回来的话都是很顺利直接连上的
|
32
fyxtc OP @RLib 这个。。。确实可以记录在 Bugly 上,这个问题留在之后解决了,应该今天能上。。。昨天搞到了一点。。。今天服务器才批下来能部署
|
34
fyxtc OP @winglight2016 嗯,确实,碰到这种极度追求细节的产品经理确实很挑战程序员的心态,他们可怕的地方是他们以为是修改,但是对我们来说其实是新的需求。。。但是我这是老板没办法,只能撑着头皮抗下去。。还好已经计划放在下个版本了,先松一口气,再不上线,团队都得压抑得不行了。。
|
35
zengzizhao 2017-08-14 12:36:50 +08:00 1
当然上线了能赚钱还好,不然你们估计没体验过,上线了更压抑,游戏赔钱的时候还得继续改莫名的 bug 的感觉更差
|
36
hellboys 2017-08-14 14:12:53 +08:00
|
37
leyucode 2017-08-14 14:19:03 +08:00 via iPhone
游戏发出来吧,让我们帮忙测试,哈哈
|
38
changnet 2017-08-14 15:46:58 +08:00 via iPad
什么类型的游戏呢? pb 的解析是比自定义的二进制慢,但一般都能满足使用要求的
|
39
enenaaa 2017-08-14 15:51:25 +08:00
@zengzizhao +1, 要是上线后留存、付费不好。各种瞎分析,无头苍蝇的优化会更折磨。
|
41
fyxtc OP |
42
DogKings 2017-08-14 16:20:02 +08:00
6666666
|
43
sampeng 2017-08-14 16:59:08 +08:00
所有奇葩问题都甩给苹果,反正产品经理也不懂。。讲真。有些问题没有解的意义。
|
44
sampeng 2017-08-14 17:01:37 +08:00
ps 一句。。挂后台一晚上不断,先不说你这游戏耗电量肯定留存有影响。你服务器吃的消?大部分人都没有关应用的习惯。10 万个长连接你服务器还不跪?
|
45
imherer 2017-08-14 18:15:40 +08:00
楼主是客户端还是服务端? 你们服务端用的什么语言开发的?
|