cocos2d-x

cocos2d-xでWebSocketの通信を行う

やりたかったこと

cocos2d-x上でWebSocketを使って各端末間で通信したかった

用意するもの

WebSocketを受け付けるサーバー

今回はPHPの Ratchet を使ってサーバーを用意した。
Ratchetのチュートリアル に従ってtelnetでの接続確認後にHttpで受け付けるように変更してサーバーとして利用している。

先日の 記事 はこの時にWindows10上でtelnetが使いたかったので生まれた。

cocos2d-xでの送受信

WebSocket::Delegateが用意されているのでそちらを利用する。

WebSocket.h
#include <WebSocket.h>

class WebSocket : public cocos2d::Scene, WebSocket::Delegate
{
public:
    virtual void onOpen(WebSocket* ws);
    virtual void onMessage(WebSocket* ws, const WebSocket::Data& data);
    virtual void onClose(WebSocket* ws);
    virtual void onError(WebSocket* ws, const WebSocket::ErrorCode& error);

    WebSocket* webSocket;
WebSocket.cpp
bool WebSocket::init()
{
    webSocket = new WebSocket();
    webSocket->init(*this, "ws://[WebSocketサーバー]");

    webSocket->send("メッセージ送信");
}

void Chat::onOpen(WebSocket* ws) {
    log("接続しました。");
}
void Chat::onMessage(WebSocket* ws, const WebSocket::Data& data) {
    log(data.bytes);
}
void Chat::onClose(WebSocket* ws){
    log("切断されました。");
}
void Chat::onError(WebSocket* ws, const WebSocket::ErrorCode& error){
}