网络
网络编程重要也很难,很复杂
Jovial-Young
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记录libwebsocket实现server的一个坑
当你遇到类似这样的打印的时候lws_validity_cb: wsi 0x9f405948: validity too old__lws_close_free_wsi: 0x9f405948: caller: validity timeout然后连接断掉或者异常发不出消息了,恭喜你,入坑了。这是超时了没有得到确认导致的,这会引起重连,如果你设置了重连策略的话。解决这个问题的办法是在你的代码里收到消息回调LWS_CALLBACK_CLIENT_RECEIVE的时候,手动调用lws_validity_confi原创 2022-07-09 10:13:59 · 1319 阅读 · 0 评论 -
libwebsockets 服务器线程模型理解
1. lws是单线程调度,从外部调用ws写,属于多线程竞争写操作,竞争的是写缓存buffer需要加互斥锁,防止临界资源-缓存buffer被破坏。每次写完缓存buffer,需要设置标志位,标识buffer的内容待发送,所有请求写操作,应该等待,这会影响执行效率。2. 应该增加一个队列,把需要写的消息保存到队列中,然后发送写请求,写端从队列中获取消息实体发送。 *应该是每个client实例拥有一个队列,否则在ws线程中,如果被调度写的client,在队列顺序取的时候不是它的消息,则会错乱。3. 如果是多原创 2022-05-26 10:56:23 · 1156 阅读 · 0 评论
分享