针对各种引擎的多年踩坑经验,网络部分我的建议是:靠自己!
最快的办法,就是做一个NODEJS代理服务器。
原生的用websocket感觉问题不少,web上用还不错。
嘿嘿,网友写的。
还真的没有试过ios,开发到现在都是在android上测试的,这个必需关注一下
这个正在修,今天可以发个patch出来。
正在修。。。
还有个情况,就是正在游戏中时,主动断开了wifi,再连接上wifi时,把游戏重启后,估计好几分钟都连不上服务器,ios上偶尔出现这个情况,android上没有发现,我在ios端第三方工具去ping我的服务器也ping不通(确定服务器正常),感觉像是ios自动把这个服务器地址垃成黑名单了,过了几分钟后就好了
游戏重启是指杀死游戏进程重新启动,还是 在游戏内自己切换到游戏首页面重新进游戏主场景?
因为断网了,我就回到游戏大厅了,连接上wifi后,想进子游戏,但进不去(也是连接不上),然后我就把游戏杀了,重点游戏图标,还是进不去,这个问题像是苹果系统问题,会短时间内主动把服务器域名拉黑
用了域名吧? 可能是 DNS 问题
是用了域名
感谢 path发布出来了的话 需要怎么样搞?
我用了jsb.downloader替换getXMLHttpRequest 就是因为xhr 有问题 有时候 真是没办法
void WsThreadHelper::update(float dt)
{
/* Avoid locking if, in most cases, the queue is empty. This could be a little faster.
size() is not thread-safe, it might return a strange value, but it should be OK in our scenario.
*/
if (0 == _UIWsMessageQueue->size())
return;
// Returns quickly if no message
_UIWsMessageQueueMutex.lock();
if (0 == _UIWsMessageQueue->size())
{
_UIWsMessageQueueMutex.unlock();
return;
}
// Gets message
// Process all messages in the queue, in case it's piling up faster than being processed
std::list<WsMessage*> messages;
while (!_UIWsMessageQueue->empty()) {
messages.push_back(_UIWsMessageQueue->front());
_UIWsMessageQueue->pop_front();
}
_UIWsMessageQueueMutex.unlock();
for (auto msg : messages) {
if (_ws)
{
_ws->onUIThreadReceiveMessage(msg);
}
CC_SAFE_DELETE(msg);
}
}
经常遇到在这行if (0 == _UIWsMessageQueue->size()) 嗝屁啊 直接闪退 有没有遇到的 怎么解决
@jiangtao_ye1 你是用creator么?
creator里面哪里有WsThreadHelper::update函数?
class WsThreadHelper
{
public:
WsThreadHelper();
~WsThreadHelper();
// Creates a new thread
bool createWebSocketThread();
// Quits websocket thread.
void quitWebSocketThread();
// Sends message to Cocos thread. It's needed to be invoked in Websocket thread.
void sendMessageToCocosThread(const std::function<void()>& cb);
// Sends message to Websocket thread. It's needs to be invoked in Cocos thread.
void sendMessageToWebSocketThread(WsMessage *msg);
// Waits the sub-thread (websocket thread) to exit,
void joinWebSocketThread();
void onSubThreadStarted();
void onSubThreadLoop();
void onSubThreadEnded();
protected:
void wsThreadEntryFunc();
public:
std::list<WsMessage*>* _subThreadWsMessageQueue;
std::mutex _subThreadWsMessageQueueMutex;
std::thread* _subThreadInstance;
private:
bool _needQuit;
};
不是Creator 是cocos-js3.9