//------------------------------------------------------------------------------ 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(); } }