mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
#ifndef EVENT2_WS_H_INCLUDED_
|
|
#define EVENT2_WS_H_INCLUDED_
|
|
|
|
struct evws_connection;
|
|
|
|
#define WS_CR_NONE 0
|
|
#define WS_CR_NORMAL 1000
|
|
#define WS_CR_PROTO_ERR 1002
|
|
#define WS_CR_DATA_TOO_BIG 1009
|
|
|
|
#define WS_TEXT_FRAME 0x1
|
|
#define WS_BINARY_FRAME 0x2
|
|
|
|
typedef void (*ws_on_msg_cb)(
|
|
struct evws_connection *, int type, const unsigned char *, size_t, void *);
|
|
typedef void (*ws_on_close_cb)(struct evws_connection *, void *);
|
|
|
|
/** Opens new WebSocket session from HTTP request.
|
|
@param req a request object
|
|
@param cb the callback function that gets invoked on receiving message
|
|
with len bytes length. In case of receiving text messages user is responsible
|
|
to make a string with terminating \0 (with copying-out data) or use text data
|
|
other way in which \0 is not required
|
|
@param arg an additional context argument for the callback
|
|
@return a pointer to a newly initialized WebSocket connection or NULL
|
|
on error
|
|
@see evws_close()
|
|
*/
|
|
EVENT2_EXPORT_SYMBOL
|
|
struct evws_connection *evws_new_session(
|
|
struct evhttp_request *req, ws_on_msg_cb, void *arg, int options);
|
|
|
|
/** Sends data over WebSocket connection */
|
|
EVENT2_EXPORT_SYMBOL
|
|
void evws_send(
|
|
struct evws_connection *evws, const char *packet_str, size_t str_len);
|
|
|
|
/** Closes a WebSocket connection with reason code */
|
|
EVENT2_EXPORT_SYMBOL
|
|
void evws_close(struct evws_connection *evws, uint16_t reason);
|
|
|
|
/** Sets a callback for connection close. */
|
|
EVENT2_EXPORT_SYMBOL
|
|
void evws_connection_set_closecb(
|
|
struct evws_connection *evws, ws_on_close_cb, void *);
|
|
|
|
/** Frees a WebSocket connection */
|
|
EVENT2_EXPORT_SYMBOL
|
|
void evws_connection_free(struct evws_connection *evws);
|
|
|
|
/**
|
|
* Return the bufferevent that an evws_connection is using.
|
|
*/
|
|
EVENT2_EXPORT_SYMBOL
|
|
struct bufferevent *evws_connection_get_bufferevent(
|
|
struct evws_connection *evws);
|
|
|
|
#endif
|