librws.h
,包含公共方法pod 'librws'
// Define variable or field for socket handle
rws_socket _socket = NULL;
............
// Create socket object
_socket = rws_socket_create();
// Combined url: "ws://echo.websocket.org:80/"
rws_socket_set_scheme(_socket, "ws");
rws_socket_set_host(_socket, "echo.websocket.org");
rws_socket_set_port(_socket, 80);
rws_socket_set_path(_socket, "/");
警告:必须调用 rws_socket_set_on_disconnected
// Main callbacks functions
// callback trigered on socket disconnected with/without error
static void on_socket_disconnected(rws_socket socket) {
// process error
rws_error error = rws_socket_get_error(socket);
if (error) {
printf("\nSocket disconnect with code, error: %i, %s", rws_error_get_code(error), rws_error_get_description(error));
}
// forget about this socket object, due to next disconnection sequence
_socket = NULL;
}
// callback trigered on socket connected and handshake done
static void on_socket_connected(rws_socket socket) {
printf("\nSocket connected");
}
// callback trigered on socket received text
static void on_socket_received_text(rws_socket socket, const char * text, const unsigned int length) {
printf("\nSocket text: %s", text);
}
..................
// Set socket callbacks
rws_socket_set_on_disconnected(_socket, &on_socket_disconnected); // required
rws_socket_set_on_connected(_socket, &on_socket_connected);
rws_socket_set_on_received_text(_socket, &on_socket_received_text);
rws_socket_connect(_socket);
const char * example_text =
"{\"version\":\"1.0\",\"supportedConnectionTypes\":[\"websocket\"],\"minimumVersion\":\"1.0\",\"channel\":\"/meta/handshake\"}";
rws_socket_send_text(_socket, example_text);
由于套接字可以是连接的,我们需要发送断开连接消息,而不是简单的懒关闭,所以需要等待然后删除对象。这就是为什么只需调用 rws_socket_disconnect_and_release
,它是线程安全的,然后忘记这个套接字对象。
rws_socket_disconnect_and_release(_socket);
_socket = NULL;
MIT 许可证 (MIT)
版权所有 (c) 2014 - 2016 Kulykov Oleh [email protected]
特此授予任何人获得本软件及其相关文档文件(“软件”)副本的权利,免费进行软件交易,包括(但不限于)使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并准许获得软件的人得以进行此类交易,但受以下条件的约束
上述版权声明和本许可声明必须包含在软件的所有副本或实质部分的副本中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不受侵犯性的保证。在任何情况下,无论因合同、侵权或其他原因引起的索赔、损害或其他责任,作者或版权所有者不应对此负责,无论索赔、损害或其他责任是否与软件有关、软件的使用或其他与软件有关的交易产生。