Я создал локальный сервер на node js, к которому должны подключаться клиенты и сохраняться в массиве:
const io = require("socket.io"),
server = io.listen(8080);
let sequenceNumberByClient = new Map();
server.on("connection", (socket) => {
console.info(`Client connected [id=${socket.id}]`);
sequenceNumberByClient.set(socket, 1);
socket.on("disconnect", () => {
sequenceNumberByClient.delete(socket);
console.info(`Client gone [id=${socket.id}]`);
});
});
Есть проект на cocos2d, который служит клиентом подключающимся к серверу выше. Код подключения прост:
////////////////////////////////////
bool OnlineManager::init()
{
m_client = cocos2d::network::SocketIO::getInstance()->connect("http://127.0.0.1:8080", *this);
return true;
}
Где:
cocos2d::network::SIOClient* m_client;
class OnlineManager
: public cocos2d::Layer
, public DelegateSocketIO
Где:
class DelegateSocketIO
: public cocos2d::network::SocketIO::SIODelegate
{
virtual void onClose(cocos2d::network::SIOClient* client) override {};
virtual void onError(cocos2d::network::SIOClient* client, const std::string& data) override {};
virtual void onConnect(cocos2d::network::SIOClient* client) { CCLOG("SIODelegate onConnect fired"); };
virtual void onMessage(cocos2d::network::SIOClient* client, const std::string& data) { CCLOG("SIODelegate onMessage fired with data: %s", data.c_str()); };
virtual void fireEventToScript(cocos2d::network::SIOClient* client, const std::string& eventName, const std::string& data) { CCLOG("SIODelegate event '%s' fired with data: %s", eventName.c_str(), data.c_str()); };
};
Во время соединения сервер пишет следующее:
"Client connected [id=NvyzP5pvZFjazcjAAAAA]"
В то же время клиент получает сообщение об ошибке:
(в методе onSocketCallback, case LWS_CALLBACK_CLIENT_CONNECTION_ERROR)
"Peer hung up"
Через 5 секунд сервер пишет: "Client gone [id=NvyzP5pvZFjazcjAAAAA]"
Peer hung up? Это что вообще значит? Может у меня плохо с английским, но в чем причина мне не понятно...
Помогите, пожалуйста, я даже не знаю в какую сторону мне двигаться. Я просто хочу, чтобы клиент подключался к серверу, имел с сервером постоянную связь, а в дальнейшем, получал от сервера ивенты.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости