我正在浏览C websocket library libwebsockets客户端示例。
但我不明白示例的目的是什么。
这是一个例子,这个例子有两个连接(在代码中wsi_dumb
和wsi_mirror
)我认为这是相同的,我不知道第二个连接的目的是什么。
使用第一个连接(在代码wsi_dumb
中),它似乎等待来自libwebsocket_service()
服务器的请求,然后......第二个连接(在代码wsi_mirror
中)怎么办?
下面是我所说的代码部分。
wsi_dumb = libwebsocket_client_connect(context, address, port, use_ssl,
"/", argv[optind], argv[optind],
protocols[PROTOCOL_DUMB_INCREMENT].name, ietf_version);
/*
* sit there servicing the websocket context to handle incoming
* packets, and drawing random circles on the mirror protocol websocket
*/
n = 0;
while (n >= 0 && !was_closed) {
n = libwebsocket_service(context, 1000);
if (wsi_mirror == NULL) {
/* create a client websocket using mirror protocol */
wsi_mirror = libwebsocket_client_connect(context, address, port,
use_ssl, "/", argv[optind], argv[optind],
protocols[PROTOCOL_LWS_MIRROR].name, ietf_version);
mirror_lifetime = 10 + (random() & 1023);
fprintf(stderr, "opened mirror connection with %d lifetimen", mirror_lifetime);
} else {
mirror_lifetime--;
if (mirror_lifetime == 0) {
fprintf(stderr, "closing mirror sessionn");
libwebsocket_close_and_free_session(context,
wsi_mirror, LWS_CLOSE_STATUS_GOINGAWAY);
/*
* wsi_mirror will get set to NULL in
* callback when close completes
*/
}
}
}
我可能会把它混在一起,但libwebsockets
中有一个示例,您只需打开第二个浏览器(窗口或选项卡),然后看到您在第一个浏览器中绘制的所有线条和圆圈镜像并发送到第二个浏览器。