2016-04-12 26 views
2

私はクライアントをJavascriptで書いてあり、うまくいきます。サーバーコードも同様に機能します。しかし、私はサーバーからクライアントにメッセージを送信する方法、または接続を終了する方法を知らない。誰もそれを行う方法を知っていますか?また、私は完全な初心者であるため、私のコードで紛失しているものは何ですか?私はできるだけシンプルにしようとしました。Websocketppでメッセージを送信するには

#include <iostream> 
#include <websocketpp/config/asio_no_tls.hpp> 
#include <websocketpp/server.hpp> 

typedef websocketpp::server<websocketpp::config::asio> server; 

void on_message(websocketpp::connection_hdl hdl, server::message_ptr msg) 
{ 
    std::cout << "Message received:" << std::endl; 
    std::cout << msg->get_payload() << std::endl; 
} 

int main() 
{ 
    server s; 
    s.set_message_handler(&on_message); 

    s.init_asio(); 
    s.listen(57252); 
    s.start_accept(); 
    std::cout << "Server Started." << std::endl; 
    s.run(); 
} 

答えて

3

あなたはまだそのコードで苦労している場合は、そこにあなたが使用しやすいかもしれませんここでは別の偉大なC++のWebSocketライブラリ、そのヘッダだけだとただのブーストを使用しています。これは、サンプルコードとドキュメントが付属しています: http://vinniefalco.github.io/

ここでエコーサーバーにメッセージを送信する完全なプログラムです:

#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"; 
} 
0

私は、これが問題ログの1つをオフに基づいて作られた:

  server::connection_ptr con = s.get_con_from_hdl(hdl); 
      std::string resp("BAD"); 
      con->send(resp, websocketpp::frame::opcode::text); 
https://github.com/zaphoyd/websocketpp/issues/572

:バイナリレスポンスをチェックアウトする必要がある方

関連する問題