boost::asio支持WebSocket吗? 我早一点问我的服务器(用C++编写的代码和 Boo::ASIO < /C>)不能与客户端连接(用JavaScript编写)。问题在于Javascript WebSocket与boost::asioSocket不同吗?boost::asio是否不支持WebSocket?解决这个问题最简单的方法是什么?

boost::asio支持WebSocket吗? 我早一点问我的服务器(用C++编写的代码和 Boo::ASIO < /C>)不能与客户端连接(用JavaScript编写)。问题在于Javascript WebSocket与boost::asioSocket不同吗?boost::asio是否不支持WebSocket?解决这个问题最简单的方法是什么?,javascript,c++,sockets,websocket,boost-asio,Javascript,C++,Sockets,Websocket,Boost Asio,Boost.Asio不直接支持WebSocket,但是有一个很棒的开源库,它与Boost.Asio非常相似,并且以您期望的方式工作。您可以尝试一下,它的标题只使用boost。它附带示例代码和文档: 下面是一个完整的程序,用于向echo服务器发送消息: #include <beast/websocket.hpp> #include <beast/buffers_debug.hpp> #include <boost/asio.hpp> #include <

Boost.Asio不直接支持WebSocket,但是有一个很棒的开源库,它与Boost.Asio非常相似,并且以您期望的方式工作。您可以尝试一下,它的标题只使用boost。它附带示例代码和文档:

下面是一个完整的程序,用于向echo服务器发送消息:

#include <beast/websocket.hpp>
#include <beast/buffers_debug.hpp>
#include <boost/asio.hpp>
#include <iostream>
#include <string>

int main()
{
    // Normal boost::asio setup
    std::string const host = "echo.websocket.org";
    boost::asio::io_service ios;
    boost::asio::ip::tcp::resolver r(ios);
    boost::asio::ip::tcp::socket sock(ios);
    boost::asio::connect(sock,
        r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"}));

    using namespace beast::websocket;

    // WebSocket connect and send message using beast
    stream<boost::asio::ip::tcp::socket&> ws(sock);
    ws.handshake(host, "/");
    ws.write(boost::asio::buffer("Hello, world!"));

    // Receive WebSocket message, print and close using beast
    beast::streambuf sb;
    opcode op;
    ws.read(op, sb);
    ws.close(close_code::normal);
    std::cout <<
        beast::debug::buffers_to_string(sb.data()) << "\n";
}
#包括
#包括
#包括
#包括
#包括
int main()
{
//正常boost::asio设置
std::string const host=“echo.websocket.org”;
boost::asio::io_服务ios;
boost::asio::ip::tcp::解析器(ios);
boost::asio::ip::tcp::socketsock(ios);
boost::asio::connect(sock,
r、 解析(boost::asio::ip::tcp::resolver::query{host,“80”});
使用名称空间beast::websocket;
//WebSocket使用beast连接并发送消息
流ws(sock);
ws.握手(主机“/”;
write(boost::asio::buffer(“你好,世界!”);
//接收WebSocket消息,使用beast打印并关闭
野兽:对某人;
操作码op;
w.read(op,sb);
ws.close(close_代码::normal);

std::cout您最好的选择可能是。它有一个
boost::asio
传输。实际上,您需要在
asio
之上编写自己的websocket协议代码,或者使用websocket++之类的现有库。@SeanCline我能不能让javascript与套接字一起工作?@Shiro看看。@DanMašek是的,问题是我想这样做在Android和浏览器上都有支持。这就是为什么我要做这项工作的原因。