oatpp / oatpp-websocket

oatpp-websocket submodule.
https://oatpp.io/
Apache License 2.0
83 stars 32 forks source link

response->putHeader("Content-Type", "text/plain; charset=utf-8"); #48

Open ezewu opened 1 week ago

ezewu commented 1 week ago

How to set UTF-8 for WebSocket

   QString chineseMessage = " 我是 join in " ;
    oatpp::String utf8Message = chineseMessage.toUtf8().constData();
    room->sendMessage(utf8Message);

In the browser console, display garbled text

���� join in

ezewu commented 1 day ago
    ENDPOINT_ASYNC("GET", "/ws/{room}/{userId}", Ws) {
        ENDPOINT_ASYNC_INIT(Ws)
        Action act() override {
            auto room = request->getPathVariable("room");
            auto userId = request->getPathVariable("userId");

            qDebug() << QString::fromStdString(room);
            OATPP_LOGd("websocket room ", room);
            OATPP_LOGd("websocket userId ", userId);

            auto response = oatpp::websocket::Handshaker::serversideHandshake(request->getHeaders(), controller->websocketHandler);

            auto parameters = std::make_shared<oatpp::network::ConnectionHandler::ParameterMap>();
            (*parameters)["room"] = room;
            (*parameters)["userId"] = userId;

            response->setConnectionUpgradeParameters(parameters);
            response->putHeader("Content-Type", "text/plain; charset=utf-8");

            return _return(response);
        }
    };

Does this websocket library currently support utf-8? This is the code I tried, but it doesn't work