//! [processTextMessage]
void SslEchoServer::processTextMessage(QString message)
{
    QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
    if (pClient)
    {
        pClient->sendTextMessage(message);
    }
}
示例#2
0
void EchoServer::processTextMessage(QString message)
{
    QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
    //if (m_debug)
        qDebug() << "Message received:" << message;
    if (pClient) {
        pClient->sendTextMessage(QString("服务器收到了") + message);
    }
}
//! [processTextMessage]
void BCWebSocketServer::processTextMessage(QString message)
{
    qDebug() << message ;
    QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
    if (pClient)
    {
        pClient->sendTextMessage(message);
    }
}
示例#4
0
// _____________________________________________________________________
void CWebSocketServer::write(int client_id, QByteArray data)
{
    //qDebug() << "CWebSocketServer::write" << client_id << data;
    QWebSocket *pClient = NULL;
    if (m_clients_rev.contains(client_id)) {
        pClient = m_clients_rev[client_id];
    }
    if (pClient) {
        if (m_transmission_mode == BINARY_MODE) pClient->sendBinaryMessage(data);
        else                                    pClient->sendTextMessage(data);
        emit bytesWritten(client_id, data.size());
    }
}
示例#5
0
文件: server.cpp 项目: Morindhal/nhl
void Server::processTextMessage(QString message)
{
    QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
    QSqlQuery query("SELECT players.first_name, players.last_name, players.date_of_birth FROM players LIMIT 0,10" , db.myDatabase);
/*
 * Pseudo code (frontend):
 * recieve JSon object
 * present JSon object to the user
 *
 * TODO:
 *
 * Frontend:
 * Get a input more usable than a string,
 * maybe through a table (generated by a hardcoded query) made clickable through JQuery
 *
 * Backend:
 * If the Pseudo code above is complete it should be pretty much done.
 * Pretty up the code, fix the Databasemanager class, it is pretty useless atm.
*/
    QJsonObject myJsonObject;
    QString tArray[3] = {"players.first_name", "players.last_name", "players.date_of_birth "};

    QJsonArray myArray[3];

    while(query.next())
        for(int i=0 ; i<3 ; i++)
        {
            myArray[i].push_back(query.value(i).toString());
        }
    for(int i = 0 ; i<3 ; i++)
        myJsonObject.insert(tArray[i], myArray[i]);
    QJsonDocument myDoc(myJsonObject);
    if (pClient) {
        qDebug() << myDoc.toJson();
        pClient->sendTextMessage(myDoc.toJson());
    }
}
示例#6
0
void ShtServer::onTextMessage(QString msg)
{
    QElapsedTimer totalTime;
    totalTime.start();

    QWebSocket *socket = qobject_cast<QWebSocket *>(sender());
    qWarning() << "received: " << msg << "from " << socket->peerName();

    //Json
    QJsonDocument doc = QJsonDocument::fromJson(msg.toUtf8());
    if(!doc.isObject()){
        socket->sendTextMessage("json or gtfo");
        return;
    }

    QJsonObject docObj = doc.object();
    int r = docObj["request"].toInt();
    switch(r){
    case 0:     //LOGIN
    {
        QString uuid = docObj["uuid"].toString();
        User* u = dbManager->findUserByUuid(uuid);
        if(!u){
            //DEFAULTS FOR NEW USERS
           u = new User();
           u->setUuid(QUuid::createUuid().toString());
           u->setName("anonimo");
           u->setEmail("");
           u->setMatches(0);
           u->setKilos(0);
           u->setState(User::AVAILABLE);
           u->setAvatar("263a");
           dbManager->addUser(u);

           u->setSocket(socket);
        }
        usersBySocket.insert(socket, u);

        QJsonObject obj = u->getJsonObject();
        QJsonDocument doc;
        doc.setObject(obj);
        QByteArray msg = doc.toJson(QJsonDocument::Compact);
        socket->sendTextMessage(msg);
    }break;

    case 1:     //GET MATCHES
    {
        User *u = usersBySocket.value(socket);
        if(!u){
            qWarning() << "WARNING: getMatches from unknown user";
            break;
        }

        QJsonArray matchesList;
        for(Match* m: matches){
            QJsonObject matchObj = m->getJsonObject();
            matchesList.append(matchObj);
        }

        QJsonObject obj;
        obj["request"] = 1;
        obj["matchesList"] = matchesList;
        QJsonDocument doc;
        doc.setObject(obj);
        QByteArray msg = doc.toJson(QJsonDocument::Compact);
        socket->sendTextMessage(msg);
    }break;
    case 2:     //CREATE MATCH
    {
        User* u = usersBySocket.value(socket);
        if(!u){
            qWarning() << "ERROR: createMatch() user not found";
            break;
        }

        if(u->getPendingMatch() != NULL){
            qWarning() << "SKIPPING: user already has a match pending";
            break;
        }

        Match *m = new Match(this);
        m->init(u);
        m->addPlayer(u);
        matches.append(m);
        u->setPendingMatch(m);

        QJsonObject obj;
        obj["request"] = 2;
        obj["result"] = "ok";
        QJsonDocument doc;
        doc.setObject(obj);
        QByteArray msg = doc.toJson(QJsonDocument::Compact);
        socket->sendTextMessage(msg);
        connect(m, &Match::finished, this, &ShtServer::onMatchFinished);
    }break;
    case 3:     //JOIN MATCH
    {
        User* u = usersBySocket.value(socket);
        if(!u){
            qWarning() << "ERROR: joinMatch() user not found";
            break;
        }

        Match* m = findMatch(docObj["uuid"].toString());
        if(!m){
            qWarning() << "ERROR: match not found";
            break;
        }
        m->addPlayer(u);
        u->setPendingMatch(m);
    }break;
    case 4:     //LEAVE MATCH
    {
        User* u = usersBySocket.value(socket);
        if(!u){
            qWarning() << "ERROR: leaveMatch() user not found";
            break;
        }

        Match* m = findMatch(docObj["uuid"].toString());
        if(!m){
            qWarning() << "ERROR: match not found";
            break;
        }
        m->leavePlayer(u);
    }break;
    case 5:     //PASS CARD
    {
        User* u = usersBySocket.value(socket);
        if(!u){
            qWarning() << "ERROR: passCard user not found";
            break;
        }

        Match* m = findMatch(docObj["uuid"].toString());
        if(!m){
            qWarning() << "ERROR: match not found";
            break;
        }
        m->passCard(u, docObj["card"].toString());
    }break;
    case 6:     //START MATCH
    {
        User* u = usersBySocket.value(socket);
        if(!u){
            qWarning() << "ERROR: matchStart user not found";
            break;
        }

        Match* m = findMatch(docObj["uuid"].toString());
        if(!m){
            qWarning() << "ERROR: match not found";
            break;
        }

        //Only match creator can start the match
        if(m->state()==Match::INIT && m->getOwner() == u){
            m->start();
        } else {
            u->sendMessage("match_server", "start_game", "denied", "");
        }

    }break;

    default:
        break;
    }
    qWarning() << "Request " << r << " evaded in " << totalTime.elapsed() << "ms";
}
示例#7
0
void WsServer::processTextMessage(QString message)
{
    QWebSocket *pClient = qobject_cast<QWebSocket *>(sender());
    if (!pClient) {
        return;
    }
    qDebug()<<message;
	QString senderIP = pClient->peerAddress().toString();
	QStringList messageParts = message.split(",");


	if (messageParts[0]=="play") { // comes in as "play,water|stones|sticks|wind|flute,<pan>"
		QString type = messageParts[1];
		double pan = messageParts[2].toDouble();
		QString scoreLine;
		if (type=="flute") {
			if (onlyOneEventAllowed) {
				if (!fluteIPs.contains(senderIP)) {
					fluteIPs.append(senderIP);
					pClient->sendTextMessage("set flute disable");
					emit eventCountChanged(FLUTE, ++eventCounter[FLUTE]); // increase the counter and send signal to UI
				} else {
					qDebug()<<"Second try from: " << senderIP;
					return;
				}
			}
			scoreLine.sprintf("i \"flute\" 0 15 %f ", pan);
		} else {
			if (onlyOneEventAllowed) {
				if (type=="water" && !waterIPs.contains(senderIP)) {
					waterIPs.append(senderIP);
					emit eventCountChanged(WATER, ++eventCounter[WATER]);
					pClient->sendTextMessage("set water disable");
				} else if (type=="stones" && !stoneIPs.contains(senderIP)) {
					stoneIPs.append(senderIP);
					emit eventCountChanged(STONES, ++eventCounter[STONES]);
					pClient->sendTextMessage("set stones disable");
				} else if (type=="sticks" && !stickIPs.contains(senderIP)) {
					stickIPs.append(senderIP);
					emit eventCountChanged(STICKS, ++eventCounter[STICKS]);
					pClient->sendTextMessage("set sticks disable");
				} else if (type=="wind" && !windIPs.contains(senderIP)) {
					windIPs.append(senderIP);
					emit eventCountChanged(WIND, ++eventCounter[WIND]);
					pClient->sendTextMessage("set wind disable");
				} else {
					qDebug()<<"Seems like second try from: " << senderIP;
					return;
				}
			}
			// get filename as random from the subfolder according to the sound type
			QString path = "../sounds/"+type + "/";
			QDir directory(path);
			QStringList files = directory.entryList(QStringList()<<"*.wav");
			QString filename = path + files[qrand()%files.count()];
			//qDebug()<<"File selected: "<<filename;


			scoreLine.sprintf("i \"play\" 0 5 \"%s\" %f ",filename.toLocal8Bit().data(), pan);
		}
		qDebug()<< scoreLine;
		emit newEvent(scoreLine);
	}


}