refectors session into client_session/server_session/core, adds client handler and chat_client example. Client functionality is experimental and non-compliant at the moment.

This commit is contained in:
Peter Thorson
2011-09-26 09:49:52 -05:00
parent 7d938df15e
commit da1795feac
29 changed files with 2100 additions and 452 deletions

View File

@@ -27,15 +27,15 @@
#include "echo.hpp"
using websocketecho::echo_handler;
using websocketecho::echo_server_handler;
void echo_handler::validate(websocketpp::session_ptr client) {}
void echo_server_handler::validate(websocketpp::session_ptr client) {}
void echo_handler::message(websocketpp::session_ptr client, const std::string &msg) {
void echo_server_handler::on_message(websocketpp::session_ptr client, const std::string &msg) {
client->send(msg);
}
void echo_handler::message(websocketpp::session_ptr client,
void echo_server_handler::on_message(websocketpp::session_ptr client,
const std::vector<unsigned char> &data) {
client->send(data);
}

View File

@@ -25,38 +25,40 @@
*
*/
#ifndef ECHO_HANDLER_HPP
#define ECHO_HANDLER_HPP
#ifndef ECHO_SERVER_HANDLER_HPP
#define ECHO_SERVER_HANDLER_HPP
#include "../../src/websocketpp.hpp"
#include "../../src/websocket_connection_handler.hpp"
#include <boost/shared_ptr.hpp>
#include <string>
#include <vector>
using websocketpp::session_ptr;
namespace websocketecho {
class echo_handler : public websocketpp::connection_handler {
class echo_server_handler : public websocketpp::connection_handler {
public:
echo_handler() {}
virtual ~echo_handler() {}
echo_server_handler() {}
virtual ~echo_server_handler() {}
// The echo server allows all domains is protocol free.
void validate(websocketpp::session_ptr client);
void validate(session_ptr client);
// an echo server is stateless. The handler has no need to keep track of connected
// clients.
void connect(websocketpp::session_ptr client) {}
void disconnect(websocketpp::session_ptr client,uint16_t status,const std::string &reason) {}
// an echo server is stateless.
// The handler has no need to keep track of connected clients.
void on_open(session_ptr client) {}
void on_close(session_ptr client,uint16_t status,const std::string &reason) {}
// both text and binary messages are echoed back to the sending client.
void message(websocketpp::session_ptr client,const std::string &msg);
void message(websocketpp::session_ptr client,
void on_message(session_ptr client,const std::string &msg);
void on_message(session_ptr client,
const std::vector<unsigned char> &data);
};
typedef boost::shared_ptr<echo_handler> echo_handler_ptr;
typedef boost::shared_ptr<echo_server_handler> echo_server_handler_ptr;
}
#endif // ECHO_HANDLER_HPP
#endif // ECHO_SERVER_HANDLER_HPP

Binary file not shown.

View File

@@ -36,7 +36,7 @@ using boost::asio::ip::tcp;
int main(int argc, char* argv[]) {
std::string host = "localhost";
short port = 5000;
short port = 9002;
std::string full_host;
if (argc == 3) {
@@ -47,10 +47,10 @@ int main(int argc, char* argv[]) {
std::stringstream temp;
temp << argv[1] << ":" << port;
temp << host << ":" << port;
full_host = temp.str();
websocketecho::echo_handler_ptr echo_handler(new websocketecho::echo_handler());
websocketecho::echo_server_handler_ptr echo_handler(new websocketecho::echo_server_handler());
try {
boost::asio::io_service io_service;

Binary file not shown.