Пример #1
0
void on_message(client* c, websocketpp::connection_hdl hdl, message_ptr msg) {
    client::connection_ptr con = sip_client.get_con_from_hdl(hdl);

    std::cout << "Received a reply:" << std::endl;
    fwrite(msg->get_payload().c_str(), msg->get_payload().size(), 1, stdout);
    received=true;
}
Пример #2
0
 void on_message(connection_ptr con, message_ptr msg) {        
     if (con->get_resource() == "/getcasecount") {
         std::cout << "detected " << msg->get_payload() << " test cases." << std::endl;
         m_case_count = atoi(msg->get_payload().c_str());
     } else {
         con->send(msg->get_payload(),msg->get_opcode());
     }
 }
Пример #3
0
   void Handler::on_message(connection_ptr con, message_ptr msg)
   {
      if (msg->get_opcode() != websocketpp::frame::opcode::TEXT)
         return;

      Log::debug("client <%s>: <message> %s", plain(con).c_str(),
            msg->get_payload().c_str());

      publish(format_message(msg->get_payload()));
   }
Пример #4
0
void websocketIO::on_message(websocketpp::connection_hdl hdl, message_ptr msg) {
    boost::property_tree::ptree json;
    std::istringstream iss(msg->get_payload());
    boost::property_tree::read_json(iss, json);
    
    std::string func = json.get<std::string> ("func");
    if(messages.find(func) != messages.end()){
        messages[func](this, msg->get_payload());
    }
}
Пример #5
0
void on_message(client* c, websocketpp::connection_hdl hdl, message_ptr msg) {
    client::connection_ptr con = c->get_con_from_hdl(hdl);

    if (con->get_resource() == "/getCaseCount") {
        std::cout << "Detected " << msg->get_payload() << " test cases."
                  << std::endl;
        case_count = atoi(msg->get_payload().c_str());
    } else {
        c->send(hdl, msg->get_payload(), msg->get_opcode());
    }
}
Пример #6
0
void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
    std::cout << "on_message called with hdl: " << hdl.lock().get()
              << " and message: " << msg->get_payload()
              << std::endl;

    try {
        s->send(hdl, msg->get_payload(), msg->get_opcode());
    } catch (const websocketpp::lib::error_code& e) {
        std::cout << "Echo failed because: " << e
                  << "(" << e.message() << ")" << std::endl;
    }
}
Пример #7
0
void WebClient::onMessage(Client* c, websocketpp::connection_hdl hdl, message_ptr pMsg) {
	Client::connection_ptr con = c->get_con_from_hdl(hdl);
	std::string res_s = con->get_resource();
	if (res_s != "/codenjoy-contest/ws?user="******"WebClient::onMessage(...) Server answer is not right: " + res_s;
		throw std::runtime_error(res_s.c_str());
	}
	std::string buffer_got = pMsg->get_payload();
	String boardString;
#ifdef _WIN32
	boardString.resize(MultiByteToWideChar(CP_UTF8, 0, &buffer_got[0], buffer_got.length(),
													   NULL, 0));
	MultiByteToWideChar(CP_UTF8, 0, &buffer_got[0], buffer_got.length(),
									&boardString[0], boardString.capacity());
#else //Assume linux
	boardString = buffer_got;
#endif 

	if (boardString.substr(0, 6) == LL("board=")) {
		boardString = boardString.substr(6, boardString.length() - 6);
		while (*boardString.rbegin() == LL('\0')) {
			boardString.pop_back();
		}

		Board b(boardString);

		String answer = solver->get(b);
		std::string utf_answer;
#ifdef _WIN32
		utf_answer.resize(WideCharToMultiByte(CP_UTF8, 0, &answer[0], answer.length(),
											   NULL, 0,  NULL, NULL));

		WideCharToMultiByte(CP_UTF8, 0, &answer[0], answer.length(),
										&utf_answer[0], utf_answer.capacity(), NULL, NULL);
		if (utf_answer == "") { // This happens if bomberman's still dead
			if (answer != LL("")) {
				throw std::runtime_error("WebClient::onMessage(...): Conversion from Char to utf8 error!");
			}
			return;
		}
#else // Assume linux
		utf_answer = answer;
#endif
		
		pMsg->set_opcode(websocketpp::frame::opcode::text);
		pMsg->set_payload(utf_answer);

		std::cout << "Sending ACTION: " << pMsg->get_payload() << std::endl;
		websocketpp::lib::error_code err;
		c->send(hdl, pMsg->get_payload(), pMsg->get_opcode(), err);
	}
}
void websocket_server::on_message(ws_socket* socket_, websocketpp::connection_hdl hdl, message_ptr msg) {
    
    if(msg->get_payload() == "CC"){
        cc_hdl_ = hdl;
        clientConnected = true;
        BOOST_LOG_TRIVIAL(info) << "Control Center connected via websocket";
    }
    else if (msg->get_payload() == "AL"){
        al_hdl_ = hdl;
        proxyConnected = true;
        BOOST_LOG_TRIVIAL(info) << "Al-Proxy connected via websocket";
    }
    
}
Пример #9
0
 void on_message(connection_ptr con, message_ptr msg) {
     if(msg->get_payload()=="skeleton") {
         con->send(getImageData(),msg->get_opcode());
     } else if(msg->get_payload()=="depth") {
         con->send(getDepthMap(true),msg->get_opcode());
     } else if(msg->get_payload()=="rgb") {
         con->send(getRGBImage(true),msg->get_opcode());
     } else if(msg->get_payload()=="savergb") {
         con->send(saveRGBImage(),msg->get_opcode());
     } else if(msg->get_payload()=="savedepth") {
         con->send(saveDepthMap(),msg->get_opcode());
     } else {
         con->send("Unknown client request",msg->get_opcode());
     }
 }
Пример #10
0
void WSConnection::rcvMessage (message_ptr msg, bool& msgRejected, bool& runQueue)
{
    ScopedLockType sl (m_receiveQueueMutex);

    if (m_isDead)
    {
        msgRejected = false;
        runQueue = false;
        return;
    }

    if ((m_receiveQueue.size () >= 1000) || (msg->get_payload().size() > 1000000))
    {
        msgRejected = true;
        runQueue = false;
    }
    else
    {
        msgRejected = false;
        m_receiveQueue.push_back (msg);

        if (m_receiveQueueRunning)
            runQueue = false;
        else
        {
            runQueue = true;
            m_receiveQueueRunning = true;
        }
    }
}
Пример #11
0
// Define a callback to handle incoming messages
void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
    try {
        s->send(hdl, msg->get_payload(), msg->get_opcode());
    } catch (const websocketpp::lib::error_code& e) {

    }
}
Пример #12
0
void chat_server_handler::on_message(connection_ptr con, message_ptr msg) {
    if (msg->get_opcode() != websocketpp::frame::opcode::text) {
        return;
    }
    
    std::cout << "message from client " << con << ": " << msg->get_payload() << std::endl;
    
    
    
    // check for special command messages
    if (msg->get_payload() == "/help") {
        // print command list
        con->send(encode_message("server","avaliable commands:<br />&nbsp;&nbsp;&nbsp;&nbsp;/help - show this help<br />&nbsp;&nbsp;&nbsp;&nbsp;/alias foo - set alias to foo",false));
        return;
    }
    
    if (msg->get_payload().substr(0,7) == "/alias ") {
        std::string response;
        std::string alias;
        
        if (msg->get_payload().size() == 7) {
            response = "you must enter an alias.";
            con->send(encode_message("server",response));
            return;
        } else {
            alias = msg->get_payload().substr(7);
        }
        
        response = m_connections[con] + " is now known as "+alias;

        // store alias pre-escaped so we don't have to do this replacing every time this
        // user sends a message
        
        // escape json characters
        boost::algorithm::replace_all(alias,"\\","\\\\");
        boost::algorithm::replace_all(alias,"\"","\\\"");
        
        // escape html characters
        boost::algorithm::replace_all(alias,"&","&amp;");
        boost::algorithm::replace_all(alias,"<","&lt;");
        boost::algorithm::replace_all(alias,">","&gt;");
        
        m_connections[con] = alias;
        
        // set alias
        send_to_all(serialize_state());
        send_to_all(encode_message("server",response));
        return;
    }
    
    // catch other slash commands
    if ((msg->get_payload())[0] == '/') {
        con->send(encode_message("server","unrecognized command"));
        return;
    }
    
    // create json message to send based on msg
    send_to_all(encode_message(m_connections[con],msg->get_payload()));
}
Пример #13
0
void on_message(ws_client* c, leveldb::DB* db,
                websocketpp::connection_hdl hdl, message_ptr msg) {
  static int count = 0;
  ws_client::connection_ptr con = c->get_con_from_hdl(hdl);

  cout << "Received: " << msg->get_payload() << endl;

  leveldb::WriteOptions opts;
  stringstream key;
  key << (count++);
  db->Put(opts, key.str(), msg->get_payload());
  // if (con->get_resource() == "/getCaseCount") {
  //   std::cout << "Detected " << msg->get_payload() << " test cases."
  //             << std::endl;
  //   case_count = atoi(msg->get_payload().c_str());
  // } else {
  //   c->send(hdl, msg->get_payload(), msg->get_opcode());
  // }
}
Пример #14
0
// Define a callback to handle incoming messages
void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
    std::cout << "on_message called with hdl: " << hdl.lock().get()
              << " and message: " << msg->get_payload()
              << std::endl;

    // check for a special command to instruct the server to stop listening so
    // it can be cleanly exited.
    if (msg->get_payload() == "stop-listening") {
        s->stop_listening();
        return;
    }

    try {
        s->send(hdl, msg->get_payload(), msg->get_opcode());
    } catch (const websocketpp::lib::error_code& e) {
        std::cout << "Echo failed because: " << e
                  << "(" << e.message() << ")" << std::endl;
    }
}
// Define a callback to handle incoming messages
void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
    std::cout << " and message: " << msg->get_payload() <<std::endl ;
    std::cout << " opcode " << msg->get_opcode() <<std::endl ;

    //    s->send(hdl, msg->get_payload(), msg->get_opcode());

    const char* msge = "{\"GESTURE\":\"Move Left\"}";

    s->send(hdl, msge, websocketpp::frame::opcode::text);
}
 void on_message(connection_ptr con,message_ptr msg) {
     int value = atoi(msg->get_payload().c_str());
     
     if (value == 0) {
         con->send("invalid sleep value.");
     } else {
         request r;
         r.con = con;
         r.value = value;
         m_coordinator.add_request(r);
     }
 }
Пример #17
0
 void on_message(connection_ptr con,message_ptr msg) {
     int value = atoi(msg->get_payload().c_str());
     
     if (value == 0) {
         con->send("Invalid sleep value.");
     } else {
         request r;
         r.con = con;
         r.value = value;
         r.process();
     }
 }
Пример #18
0
 void on_message(connection_ptr con, message_ptr msg) {
     request r;
     r.type = PERF_TEST;
     r.writer = writer_ptr(new ws_writer<endpoint_type>(con));
     r.req = msg->get_payload();
     
     if (m_blocking) {
         r.process(0);
     } else {
         m_coordinator.add_request(r);
     }
 }
Пример #19
0
void ReadUncompressed::handleRx(const message_ptr message)
{
    if (!m_initialized)
    {
        m_initialized = check();
        if (!m_initialized) m_error = true;
    }
    else
    {
        if (message->get_opcode() == websocketpp::frame::opcode::binary)
        {
            const std::string& bytes(message->get_payload());
            const std::size_t rawNumBytes(bytes.size());
            const std::size_t stride(m_layout->pointSize());

            m_data.insert(m_data.end(), bytes.begin(), bytes.end());

            const std::size_t wholePoints(m_data.size() / stride);

            PointId nextId(m_view->size());
            const PointId doneId(nextId + wholePoints);

            const char* pos(m_data.data());

            while (nextId < doneId)
            {
                for (const auto& dim : m_layout->dims())
                {
                    m_view->setField(
                            dim,
                            m_layout->dimType(dim),
                            nextId,
                            pos);

                    pos += m_layout->dimSize(dim);
                }

                ++nextId;
            }

            m_numBytesReceived += rawNumBytes;
            m_data.assign(
                    m_data.begin() + wholePoints * stride,
                    m_data.end());
        }
        else
        {
            m_error = true;
        }
    }
}
Пример #20
0
void ReadCompressed::handleRx(const message_ptr message)
{
    std::lock_guard<std::mutex> lock(m_mutex);
    if (!m_initialized)
    {
        m_initialized = check();
        if (!m_initialized) m_error = true;

        m_data.resize(m_numBytes);

        m_decompressionThread = std::thread([this]()->void {
            m_decompressor.decompress(m_data.data(), m_data.size());

            const char* pos(m_data.data());
            for (PointId i(0); i < m_pointsToRead; ++i)
            {
                for (const auto& dim : m_layout->dims())
                {
                    m_view->setField(
                            dim,
                            m_layout->dimType(dim),
                            i,
                            pos);

                    pos += m_layout->dimSize(dim);
                }
            }

            m_done = true;
            m_doneCv.notify_all();
        });

        m_decompressionThread.detach();
    }
    else
    {
        if (message->get_opcode() == websocketpp::frame::opcode::binary)
        {
            const std::string& bytes(message->get_payload());

            m_compressionStream.putBytes(
                    reinterpret_cast<const uint8_t*>(bytes.data()),
                    bytes.size());
        }
        else
        {
            m_error = true;
        }
    }
}
Пример #21
0
void WebSocketManager::on_message(connection_ptr con, message_ptr msg)
{
    LogDebug("Got message: " + msg->get_payload());
    ptree pt;

    //Parses the message as JSON
    if(parseJson(msg->get_payload(), pt) != -1) {

        //Checking if JSON string has event information and data
        QString event = QString::fromStdString(pt.get<string>("event", "empty"));

        if (event == "empty")
            return;

        QString data = QString::fromStdString(pt.get<string>("data", "empty"));

        if (data == "empty")
            return;

        emit gotEvent(event, data, QString::fromStdString(getConId(con)));
    }

}
Пример #22
0
 void on_message(connection_ptr con,message_ptr msg) {
     con->send(msg->get_payload(),msg->get_opcode());
 }
Пример #23
0
 void on_message(connection_ptr con, message_ptr msg)
 {
     const QString payload = QString::fromStdString(msg->get_payload());
     pimpl->receivedMessage(payload);
     qDebug() << "Got Message:" << payload;
 }
Пример #24
0
 void on_message(websocketpp::connection_hdl, message_ptr msg) {
     m_messages.push_back(msg->get_payload());
 }
Пример #25
0
 void on_message(connection_ptr con, message_ptr msg) {        
     std::cout << msg->get_payload()  << std::endl; 
     received=true;
 }
Пример #26
0
/* handler library*/
void echo_func(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
    s->send(hdl, msg->get_payload(), msg->get_opcode());
}
Пример #27
0
void StreamClient::on_message(websocketpp::connection_hdl hdl, message_ptr msg)
{
    OnMessage(msg->get_payload());
}
Пример #28
0
void
manager::on_message(connection_ptr conn, message_ptr msg)
{
	const string content(msg->get_payload());

	Value ret;

   cleanup(); // do some maintenance

	if(read(content, ret) && is_obj(ret)) {
		Object obj(ret.get_obj());
		Value type(get_field_from_obj(obj, "msg"));

		if(is_string(type)) {
			const string& str(type.get_str());
			
			if(str == "next") {
            client *cl(get_client(conn));
            cl->counter++;
         } else if(str == "load_temp") {

            Value filev(get_field_from_obj(obj, "file"));
            string file(filev.get_str());

            if(valid_temp_file(file)) {
               client *cl(get_client(conn));
               cl->done = false;
               cl->counter = 0;

               if(cl->th != NULL) {
                  delete cl->th;
                  cl->th = NULL;
               }

               boost::thread *th = new boost::thread(boost::bind(&ui::manager::start_file, this, file, cl, true));

               cl->th = th;
            }
         } else if(str == "load" || str == "load_temp") {
            Value filev(get_field_from_obj(obj, "file"));
            string file(filev.get_str());
            client *cl(get_client(conn));
            cl->done = false;
            cl->counter = 0;

            if(cl->th != NULL) {
               delete cl->th;
               cl->th = NULL;
            }

            boost::thread *th = new boost::thread(boost::bind(&ui::manager::start_file, this, file, cl, false));

            cl->th = th;

         } else if(str == "jump") {
            Value node(get_field_from_obj(obj, "steps"));

            if(is_int(node)) {
               const int steps(node.get_int());
               client *cl(get_client(conn));

               cl->counter += steps;
            }
         } else if(str == "get_node") {
				Value node(get_field_from_obj(obj, "node"));
				
				if(is_int(node)) {
					db::node::node_id id((db::node::node_id)node.get_int());

					DECLARE_JSON("node");
					
					ADD_FIELD("node", (int)id);
					ADD_FIELD("info", sched::serial_ui_local::dump_node(id));
					
					SEND_JSON(conn);
				}
			} else if(str == "change_node") {
				Value node(get_field_from_obj(obj, "node"));
				
				if(is_int(node)) {
					db::node::node_id id((db::node::node_id)node.get_int());

					sched::serial_ui_local::change_node(id);
					
					DECLARE_JSON("changed_node");
					ADD_FIELD("node", (int)id);
					SEND_JSON(conn);
				}
			} else if(str == "terminate") {
            client* cl(get_client(conn));
            cl->done = true;
			} else {
				cerr << "Message not recognized: " << str << endl;
			}
		}
	}
}
	// got a new message from server
	void on_message(connection_ptr con, message_ptr msg){
		//https://github.com/LearnBoost/socket.io-spec#Encoding
		/*	0		Disconnect
		1::	Connect
		2::	Heartbeat
		3:: Message
		4:: Json Message
		5:: Event
		6	Ack
		7	Error
		8	noop
		*/
		std::string strm = msg->get_payload();
		char f = strm[0];
		std::string::size_type p = 1;
		for(int i = 0 ; i < 2; i++){
			p = strm.find_first_of(':',p+1);
		}
		std::string data = strm.substr(p+1);
		con->alog().at(log::alevel::DEVEL)<<"revc: "<<  strm <<log::endl;
		con->alog().at(log::alevel::DEVEL)<<"type: "<< f <<" data: "<<  data <<log::endl;
		Json::Reader r;
		Json::Value v;
		switch(f){
		case '0':
			close();
			break;
		case '1':
			on_connect(con);
			break;
		case '2':
			con->send_heartbeat();
			break;
		case '3':
			on_strmessage(data,msg);
			break;
		case '4':
			on_jsonmessage(data,msg);
			/*
			var fe:FlashSocketEvent = new FlashSocketEvent(FlashSocketEvent.MSG_JSON);
			fe.data = JSON.decode(dm.msg);
			dispatchEvent(fe);
			*/
			break;
		case '5':

			if(r.parse(data,v)){
				on_event(v["name"].asString(),v["args"],msg);
			}else{
				con->alog().at(log::alevel::DEVEL)<<"parse json failed error  "<<  data <<log::endl;
			}
			/*
			var m:Object = JSON.decode(dm.msg);
			var e:FlashSocketEvent = new FlashSocketEvent(FlashSocketEvent.EVENT);
			e.data = m;
			dispatchEvent(e);
			*/
			break;
		case '7':
			//on_fail();	
			/*
			var m:Object = JSON.decode(dm.msg);
			var e:FlashSocketEvent = new FlashSocketEvent(FlashSocketEvent.CONNECT_ERROR);
			e.data = dm.msg;
			dispatchEvent(e);
			*/

			break;
		default:
			break;
		}
	}
Пример #30
0
void WebSocketWorker::on_message(websocketpp::connection_hdl /*hdl*/, message_ptr msg)
{
   std::string s = msg->get_payload();
   QByteArray result(s.data(), s.length());
   Q_EMIT messageReceived(result);
}