使用creator,网络连接用的websocket经常断线

使用creator 1.42版本开发的客户端,网络连接用的websocket,服务器java netty的框架,客户端断线非常频繁,平均运行10-20分钟就会断一次,查了好久不知道是什么原因,有谁有同样的问题吗?求救啊

3赞

我也做了重连,但断线频率实在太高,非常影响用户体验

各位大大来看下,别沉了

顶一下,我遇到这个问题,不知道怎么解决

哪位大神指点下,别沉了

上层做心跳。 因为断线抓不到事件。只有自己来检查

心跳、重连都有,就是断网频繁,老是重连,很影响用户体验

http://forum.cocos.com/t/httprequest-android/45905

@gamedevboy,你给的这个链接是http连接啊,跟websocket没直接关系啊。

之前收到反馈,iOS锁屏、切换网络的断线,没有给onclose事件。Android 网络断开有触发onclose吧?

同样的网络环境,web上的表现呢?是否会断开?还有你说的具体是哪个平台啊?

creator的断线问题真的好蛋疼啊。而且各个版本问题都不一样。

手机网页版,他自己会无缘无故断线,加了PING后会好一些。
安卓版本,玩着玩着会无缘无故断线,一般可以重连上(我的逻辑是发现断线直接重连,如果连不上,就弹出一个窗口,点击后再重连),但是有时候会重连不上,但是过一会儿就能重连上
IOS一般玩的时候是不会有问题。

但是切换到后台,再切回来,问题又不一样:
有时候,有时候不断线,会断线(IOS断线的概率高一些),所以我在GAME_SHOW的时候,检测一下网络是否是open,如果不是就重连。但是发现有时候检测是通过的,但是实际上已经断线了,发送消息服务器是没收到的。但是还是处于open状态。

还有切换网络也是各种问题,主要表现在有时候检测到有时候是检测不到的。

还有飞行模式切换也会出问题。

唉,来来去去,已经改了10来个版本。。。

我之前用的是cocos2,安卓和ios的网络底层一直是很稳定的。断了就断了,就是偶尔,几万玩家可能也就有那么1个,有出现在路上玩,可能切换网络,会出现问题。但是很少很少。

1赞

安卓和IOS原生客户端

这是要逼我们去用HTTP轮询的节奏啊:innocent:

说实话,java spring websocket连接ccc真的好不稳定,各种断线,各种莫名其妙丢包啥的,很崩溃,来来去去弄了几个月了,现在都已经用上客户端和服务端双队列模式才稍微好一点,是不是实现的协议版本不一样或者啥原因造成的哦!!!

ws 连接nodejs的ws没丢过。H5/安卓/IOS都很稳定欸

这个问题有望在1.6中修复。原因是我们用的是第三方库libwebsockets, libwebsockets内部使用bsd socket这个跨平台实现,由于苹果不建议直接用bsd socket,而且明确说,使用bsd socket会导致3G网络无法被自动激活,网络切换、前后台切换,锁屏都有可能导致断网,但是实际上没有onerror或者onclose的消息。具体可以看:https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/CommonPitfalls/CommonPitfalls.html#//apple_ref/doc/uid/CH73-SW4

我们打算在1.6版本中为iOS和mac平台切换websocket的底层实现为facebook 开源的SocketRocket (objective-c 基于系统CFNetwork API,非bsd socket),上层代码无需修改。

解决bug的同时,带来额外的一些好处:

The API of SocketRocket is easy for use, it’s all asynchronous API.
No need to deal with thread communications, it’s wrapped inside SocketRocket.
Network status change will not make connection closed, it just seems there isn’t any status change.
Locking screen will trigger an error while libwebsockets or bsd socket will not.
Don’t depend on openssl library which is a little big.
Don’t need to use a local CA root certificate (curl ca file is over 2MB) for wss connection
Don’t trigger signal pipe while closing wss connection
Easy to integrate SocketRocket to current WebSocket implementation

3赞

想问一下, 1.6版本预期什么时候发布

我用cocoscreator websocket也是碰到类似的问题, 很容易莫名其妙地断线, 我用的creator 1.4.1版本

@dumganhar 大神威武~~