void websocket_processor::onMessage(int socketFD) { int rc = alm::network::recv(socketFD, m_buffer, BLOCK); if( rc > 0) { if(m_websocket_handler.exists(socketFD)) { alm::websocket_frame frame; alm::websocket::readFrame(socketFD, m_buffer, rc, frame); m_websocket_handler.processFrame(socketFD, frame); } else { std::string rqst((const char*)m_buffer, rc); if(rqst.find(alm::websocket::SEC_WEBSOCKET_KEY) != std::string::npos) { alm::websocket::handshake(socketFD, rqst); m_websocket_handler.onOpen(socketFD); } else { m_http_handler.process(socketFD, m_buffer, rc); } } } }
int main( int argc, char *argv[] ) { int connfd; get_config(argc,argv); set_signals(); server_sock = server_start(); cout << "Server start running at port " << server_port << endl; while( true ) { connfd = Accept( server_sock, NULL, NULL ); Request rqst( connfd ); rqst.handle(); } close(server_sock); return 0; }