cocos2d-js websocket连续收发包有延时

玩家连续相同频率给服务器发相同的包,可是客户端收包的间隔有异常,已经确认服务器是正常的,也就是说服务器是按相同间隔给客户端回包的,但是服务器收到的包有延迟,有时会突然收到两个包,或者延迟时间在几百毫秒,这个严重影响游戏体验,求大神解惑~

正常时延时大约在20毫秒之内,平正常时延时会在200毫秒

楼主解决了没有,我也出现同样问题!这个有谁决解了,贡献一下,不然项目要挂了:sweat:

没有解决啊~我也一直在找,你解决了吗?解决了的话告诉我一下哈~

如果按照60帧算,websocket线程收到消息后需要post事件到cocos线程执行,也就是说收到消息的延时至少是16ms。
如果游戏设置为30帧,那延时就是32ms。

200毫秒算是不太正常的行为了,这个我这里有什么方法重现么,最好有重现代码?

其实cocos的websocket实现是基于libwebsockets的第三方库的,在没有重现demo的情况下,我们也不好跟libwebsockets官方反馈这个问题。

服务端问题。。。

服务端什么问题?能否跟大家分享一下经验?

使用wireshark去监控你的网络传输的情况,从网络层去看 到底是客户端的问题还是服务端的问题。
这样找到问题 如果是服务端的问题 你也有证据支持你的观点

感谢关注和回复,我和服务器确认过,服务器确认没有问题呀~

感谢回复,是这样的,我做的游戏是类似一个多人联机游戏,类似捕鱼项目中的自动开火,我在客户端做的每隔200毫秒做一个发射炮弹的操作,服务器那边正常(也就是说服务器每200毫秒给所有玩家回一个开火的消息),可客户端收到有时就感觉像是卡顿了一下,节奏不是预想那样,频率有快有慢,不知道有什么完美解决方案吗?

如果确认是客户端问题,那么需要确认到底是网络层(接受阻塞) 还是UI阻塞。
建议:
1、收发信息,但是不要去触发动作等,记录数据在内存里(不要打印,测试一段时间后再输出出来,打印频繁也慢的)
2、如果1 正常,那么就是你的游戏里面动画 生成对象 等造成的问题了。那么就是优化代码的事情了,具体的就是不要把所有的动作放在一帧里去做,如果有好多动画和动作,就分帧做吧。
能做的也只有这么多了。

2赞

请问,这个问题你们解决了么?

你们这问题和cocos有啥关系,你们该去看看游戏同步的知识
这种情况无论用什么网络连接都会出现的。
你们是第一次做这种游戏吧。

大哥给点经验来。。我想问比如捕鱼 的敌人同步你咋做

去找网络游戏的同步知识
比如:帧同步、状态同步啥的
一查就查到了,不过你的前路漫漫

看到 很多 但是沒有找到合適 確實第一次做同步

有没有大佬有解决方案,我现在websocket也遇到了这个问题。网络没有波动的情况下,概率性出现。收到包延迟,然后就突然连续收到几个包。

先学习下基本的网络知识吧,不管是tcp/udp,傻傻p,都不能保证网络不波动。

有没有设置类似这个的
socket.setNoDelay(true)

最近也遇上同樣的問題…
項目打包的是 cocos creator 2.0.9 -> web-mobile

服務端是go的gorilla/websocket
會定時廣播賽事的剩餘秒數
傳過來的包裡面就一個 指令代碼 int 跟 剩餘秒數 int
在桌機上開都是正常的
但是在行動裝置上開
iphone safari / chrome…
則偶而正常…偶而會有 message 延遲了 3-10秒 才收到…

這邊有寫了一個陽春的版本…
只帶個按鈕跟文字框…
日誌也是從 ws onmessage 觸發時直接留下

剛試過更新版本用 2.1.0 也還是會有相同情況
不知道這部分有什麼解決的方法嗎?
(試過縮短心跳同步時間…反而延遲的更嚴重…)