Beispiel #1
0
//------------------------------------------------------------------------------
void ofApp::onWebSocketFrameReceivedEvent(WebSocketFrameEventArgs& evt)
{
    cout << "Frame from: " << evt.getConnectionRef().getClientAddress().toString() << endl;

    ofxJSONElement json;

    if(json.parse(evt.getFrameRef().getText()))
    {
        std::cout << json.toStyledString() << std::endl;

        if(json.isMember("command") && json["command"] == "SET_BACKGROUND_COLOR")
        {
            if(json["data"] == "white")
            {
                bgColor = ofColor::white;
            }
            else if(json["data"] == "black")
            {
                bgColor = ofColor::black;
            }
            else
            {
                cout << "Unknown color: " << json["data"].toStyledString() << endl;
            }
        }
    }
    else
    {
        ofLogError("ofApp::onWebSocketFrameReceivedEvent") << "Unable to parse JSON: "  << evt.getFrameRef().getText();
    }
}
//------------------------------------------------------------------------------
void ofApp::onWebSocketFrameReceivedEvent(WebSocketFrameEventArgs& evt)
{
    std::string userId = evt.getConnectionRef().getClientAddress().toString();
    std::string rawStringMessage = evt.getFrameRef().getText(); // === e.g. "20,44"
    std:vector<std::string> tokens = ofSplitString(rawStringMessage,",");
    
    //if message has 2 tokens, it means mouse position
    if(tokens.size() == 2)
    {
        float x = ofMap(ofToInt(tokens[0]), 0, 640, 0, ofGetWidth());
        float y = ofMap(ofToInt(tokens[1]), 0, 480, 0, ofGetHeight());
        
        ofVec2f position = ofVec2f(x,y);
        
        for(std::vector<Person>::iterator p = people.begin(); p != people.end(); ++p){
            if ((*p).id == evt.getConnectionRef().getClientAddress().toString()){
                (*p).pos = position;
            }
        }
    }
 
    //else, it means a click
    else if(tokens.size() == 1)
    {
        for(std::vector<Person>::iterator p = people.begin(); p != people.end(); ++p){
            if ((*p).id == evt.getConnectionRef().getClientAddress().toString()){
                (*p).col = ofColor(ofRandom(255),ofRandom(255),ofRandom(255));
                (*p).curvature = ofRandom(800, 3000);

            }
        }
    }
    
    else
    {
        ofLogError("ofApp::onWebSocketFrameReceivedEvent") << "Unable to read message "  << evt.getFrameRef().getText();
    }

}