int swoole_websocket_onHandshake(swListenPort *port, http_context *ctx) { #if PHP_MAJOR_VERSION < 7 TSRMLS_FETCH_FROM_CTX(sw_thread_ctx ? sw_thread_ctx : NULL); #endif int fd = ctx->fd; int ret = websocket_handshake(port, ctx); if (ret == SW_ERR) { swServer_tcp_close(SwooleG.serv, fd, 1); } else { swoole_websocket_onOpen(ctx); } //free client data if (!ctx->end) { swoole_http_context_free(ctx TSRMLS_CC); } return SW_OK; }
int swoole_websocket_onHandshake(http_context *ctx) { #if PHP_MAJOR_VERSION < 7 TSRMLS_FETCH_FROM_CTX(sw_thread_ctx ? sw_thread_ctx : NULL); #endif int fd = ctx->fd; int ret = websocket_handshake(ctx); if (ret == SW_ERR) { SwooleG.serv->factory.end(&SwooleG.serv->factory, fd); } else { swoole_websocket_onOpen(ctx); } //free client data if (!ctx->end) { swoole_http_context_free(ctx TSRMLS_CC); } return SW_OK; }
/** * default onRequest callback */ void swoole_websocket_onRequest(http_context *ctx) { SWOOLE_GET_TSRMLS; char *content = "<html><body><h2>HTTP ERROR 400</h2><hr><i>Powered by "SW_HTTP_SERVER_SOFTWARE" ("PHP_SWOOLE_VERSION")</i></body></html>"; char *bad_request = "HTTP/1.1 400 Bad Request\r\n"\ "Content-Type: text/html; charset=UTF-8\r\n"\ "Cache-Control: must-revalidate,no-cache,no-store\r\n"\ "Content-Length: %d\r\n"\ "Server: "SW_HTTP_SERVER_SOFTWARE"\r\n\r\n%s"; char buf[512]; int n = sprintf(buf, bad_request, strlen(content), content); swServer_tcp_send(SwooleG.serv, ctx->fd, buf, n); ctx->end = 1; swServer_tcp_close(SwooleG.serv, ctx->fd, 0); swoole_http_context_free(ctx TSRMLS_CC); }