Wslay是一个用C语言实现的WebSocket开发库。实现了RFC6455中描述的第13版本的协议。提供了基于事件的API和基于帧的底层API。特别适合非堵塞的reactor模式风格应用。可在不同的事件中设置回调。Wslay只支持WebSocket协议的数据传输部分,不执行HTTP的握手过程。
示例代码:
ssize_t sed_callback(wslay_evet_cotext_ptr ctx, cost uit8_t *data, size_t le, void *user_data){ struct Sessio *sessio = (struct Sessio*)user_data; ssize_t r; it sflags = 0;#ifdef MSG_MORE if(flags & WSLAY_MSG_MORE) { sflags |= MSG_MORE; }#edif // MSG_MORE while((r = sed(sessio->fd, data, le, sflags)) == -1 && erro == EINTR); if(r == -1) { if(erro == EAGAIN || erro == EWOULDBLOCK) { wslay_evet_set_error(ctx, WSLAY_ERR_WOULDBLOCK); } else { wslay_evet_set_error(ctx, WSLAY_ERR_CALLBACK_FAILURE); } } retur r;}
评论